这是我的操作代码,目前仅允许 GET 用于测试目的
//[HttpPost]
public JsonResult BuildingBookings(string buildingName)
{
var result = new BuildingBookings_Result(); //This has a breakline on it
//Uninteresting code to populate result
return Json(result, JsonRequestBehavior.AllowGet);
}
我的 ASP MVC 的第一行上有一个断点,我可以在浏览器中使用以下 URL 触发它以进行测试
http://localhost:22468/Buildings/Bookings?buildingName=DoesNotExist
并返回预期的结果
{"Success":false,"Message":"Building not found","Data":[]}
但是当我尝试从 jQuery 做完全相同的事情时,我的 ASP MVC 操作中的断点永远不会被触发。无论我使用 GET 还是更正所有相关代码以改用 POST,这都是一样的。
//Source code in browser using Ajax
<script>
$("#MainForm").submit(
function () {
alert("Calling");
$.ajax({
url: "http://localhost:22468/Buildings/Bookings",
data: { buildingName: "DoesNotExist" },
type: "GET",
success: function (result) {
alert("Call OK");
alert("Status " + result.Success);
alert("Message" + result.Message);
alert("Building name " + result.Data.Name);
alert("Sleeps " + result.Data.Sleeps.toString());
},
error: function (request, status, errorThrown) {
alert("Call Fail");
alert("status " + status);
alert("request " + request.toString());
alert("error " + errorThrown.toString());
}
});
return false;
});
</script>
我收到“呼叫”警报,然后是“呼叫失败”,状态 =“错误”
更新:这不是 CORS 问题,因为我已在响应中添加了适当的标头以允许跨域调用。该代码适用于 GET,但不适用于 POST 或 jsonp 作为 $.ajax 类型(显然我首先将 [HttpPost] 放回原处)