小编典典

chrome中的jQuery ajax问题

ajax

我在我的页面上运行了以下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);
    }

阅读 391

收藏
2020-07-26

共1个答案

小编典典

我只是看到这个问题已经得到了很多看法,并且仍然存在。我完全忘记了它,希望这可以让我关闭它。

将datatype参数设置为空,甚至完全删除datatype参数都将解决该问题。

在我的示例中,我返回一个渲染的视图(字符串中的html片段),并且在这段代码中,我实际上将数据类型指定为json。如果数据类型不正确,大多数其他浏览器似乎会忽略该数据类型,并且会继续使用,允许我附加html结果。

Chrome抛出错误。状态文本为OK,状态代码为200,因为实际的ajax请求通过了。问题与请求本身无关,问题在于返回的数据不是我告诉chrome的结果。

所以铬破裂。如果我完全删除datatype参数,chrome会在获取数据时弄清楚数据是什么。如果我将数据类型参数设置为“ html”,那么它也可以正常工作。

长话短说,问题不在于镀铬。是我。因为我很傻 我将其标记为该问题的答案,因为它回答了我在原始问题中提出的示例。

在评论中,其他人描述了该解决方案最有可能无法解决的其他情况。

2020-07-26