$ .ajax在不同步时激发成功;异步时出错?

时间:2017-03-01 02:29:35

标签: jquery asp.net ajax

我有一个$ .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响应回来......

enter image description here

...但是在FF / Chrome中,错误处理程序被触发而不是成功处理程序。

由于我在Stackoverflow上读到的其他内容,我尝试更改Ajax调用,以便它是同步的,看起来这使得所有三个浏览器都成功处理了成功处理程序!

关于为什么不同的浏览器/ synch-asynch行为的任何想法?

我应该干净并承认jQuery版本是1.11.x,这已经有几年了。

0 个答案:

没有答案