jQuery Ajax错误响应包含成功响应

jQuery Ajax错误响应包含成功响应,jquery,Jquery,这对我来说是一个令人困惑的问题。当我运行ajax请求时,它总是返回一个错误,但是检查响应文本中的数据实际上就是我需要的数据。那么为什么会出现错误呢 $.ajax({ type: "GET", url: "/getjson.php?name=jay", dataType: "json", success: function(msg){ alert(msg); }, error: function(msg) {

这对我来说是一个令人困惑的问题。当我运行ajax请求时,它总是返回一个错误,但是检查响应文本中的数据实际上就是我需要的数据。那么为什么会出现错误呢

$.ajax({
    type: "GET",
    url: "/getjson.php?name=jay",
    dataType: "json",

    success: function(msg){
            alert(msg);
    },
    error: function(msg) {
            alert("Error: " + msg.responseText);
    }

    });

将错误func更改为

error: function(jqXHR, error_textStatus, errorThrown)
并检查以下各项:

jqXHR.readyState     
jqXHR.status      // <=== specially this           
jqXHR.statusText         
jqXHR.responseText 
jqXHR.readyState

jqXHR.status/返回的HTTPStatus代码是jQuery用来确定调用哪个处理程序的代码

如果代码在200范围(200-299)或304范围内,则将调用成功回调,否则将调用错误回调


此外,如果jQuery未能解析响应,则会将其视为错误(例如,如果在需要json时返回html,则会调用错误回调)

我们可能需要查看php代码才能识别出这一点。另外,如果你在chrome developer tools/firebug中打开网络选项卡,你会收到什么响应头?readyState=4,status=200,statusText=OK,responseText=我应该得到成功的响应。可能是因为JSON包含反斜杠吗?是的,它是200。这就是令人困惑的地方。答案现在更新为调用错误回调的另一个原因。对此,最佳解决方案是什么?我真的不想在错误中解析json响应。一旦代码投入生产,我就无法控制json,只能在我的开发服务器上进行测试。修复。将数据类型设置为文本。