我有一个$ .ajax在API端点上执行PUT。
当'async'选项为true时,错误处理程序将触发FF / Chrome,但不会触发IE。
当'async'为false但成功处理程序为所有三个浏览器触发时。
导致这种情况的原因是什么?
我已将JS和C#都降低到最低限度,目前看起来像这样。
JS代码:
function _saveClickHandlerFactoryTESTBED(rtrnToSmplDtlsURL){
return (function (event) {
$.ajax({
url: '/api/templatesetallocationcontroller/updatesampletemplatesetselection',
type: 'PUT',
dataType: 'json',
data: {},
contentType: 'application/json; charset=utf-8',
async: false,
success: function (data, textStatus, jqXHR) {
console.log("Success !")
},
error: function (jqXHR, textStatus, errorThrown) {
console.log("Error !")
}
});
});
};
JS中的其他地方
$('#btnsave').bind("click", _saveClickHandlerFactoryTESTBED( rtrnToSmplDtlsURL ));
C#只在所有圈子下发送200响应:
[System.Web.Http.Route("api/templatesetallocationcontroller/updatesampletemplatesetselection/")]
[System.Web.Http.HttpPut]
public HttpResponseMessage UpdateSampleTemplateSetSelection([FromBody]JObject jsonbody)
{
try
{
return Request.CreateErrorResponse(HttpStatusCode.OK, "OK");
}
catch (Exception ae)
{
throw;
}
}
在小提琴手中我可以看到200响应回来......
...但是在FF / Chrome中,错误处理程序被触发而不是成功处理程序。
由于我在Stackoverflow上读到的其他内容,我尝试更改Ajax调用,以便它是同步的,看起来这使得所有三个浏览器都成功处理了成功处理程序!
关于为什么不同的浏览器/ synch-asynch行为的任何想法?
我应该干净并承认jQuery版本是1.11.x,这已经有几年了。