这是我的操作代码,目前只允许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]放回第一个)