これが私のアクションコードです。これは現在、テスト目的でのみ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>
「Calling」アラートが表示され、続いて「Call fail」、Status = 「Error」が表示されます
更新: クロスドメイン呼び出しを許可するために応答に適切なヘッダーを追加したため、これは CORS の問題ではありません。コードは GET で動作しますが、$.ajax タイプの POST または jsonp では動作しません (明らかに [HttpPost] を最初に戻します)。