我在我的页面上运行了以下jQuery代码,它们在FF和IE中都很好,但是Chrome似乎吓坏了。
在FF和IE中,将进行调用并将结果附加到div。在chrome中,失败时会调用ajaxfailed。
传递给AjaxFailed函数的XMLHttpRequest的状态码为“ 200”,statusText为“ ok”。readystate是4,responseText设置为我希望追加到div的数据。基本上,从我可以看到它的调用失败方法的角度来看,但它没有失败..我已经尝试了get和post请求,它总是在铬。
function getBranchDetails(contactID, branchID) { $.ajax({ type: "GET", url: urlToRequestTo, data: "{}", contentType: "application/json; charset=utf-8", dataType: "json", success: branchDetailsSuccess, error: AjaxFailed }); } function branchDetailsSuccess(result) { $("#divBranchControl").empty(); $("#divBranchControl").append(" " + result); $("#branchDiv").tabs(); } function AjaxFailed(result) { alert("FAILED : " + result.status + ' ' + result.statusText); }
我只是看到这个问题已经得到了很多看法,并且仍然存在。我完全忘记了它,希望这可以让我关闭它。
将datatype参数设置为空,甚至完全删除datatype参数都将解决该问题。
在我的示例中,我返回一个渲染的视图(字符串中的html片段),并且在这段代码中,我实际上将数据类型指定为json。如果数据类型不正确,大多数其他浏览器似乎会忽略该数据类型,并且会继续使用,允许我附加html结果。
Chrome抛出错误。状态文本为OK,状态代码为200,因为实际的ajax请求通过了。问题与请求本身无关,问题在于返回的数据不是我告诉chrome的结果。
所以铬破裂。如果我完全删除datatype参数,chrome会在获取数据时弄清楚数据是什么。如果我将数据类型参数设置为“ html”,那么它也可以正常工作。
长话短说,问题不在于镀铬。是我。因为我很傻 我将其标记为该问题的答案,因为它回答了我在原始问题中提出的示例。
在评论中,其他人描述了该解决方案最有可能无法解决的其他情况。