2011-11-20 54 views
2

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

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

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

    }); 
+0

我们可能需要看到你的PHP代码能够辨别出这一点。另外,如果你在chrome developer tools/firebug中打开网络标签,你会收到什么响应头文件? –

回答

1

返回的HTTPStatus代码是什么jQuery使用来确定要调用的处理程序。

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

而且,如果jQuery的失败解析响应,它被视为错误(例如,如果返回HTML时JSON预计,错误回调会被调用)

+0

是的,它是200.这是什么让人困惑。 – GV1

+0

现在回答更新错误回调被调用的替代原因。 –

+0

这是最好的解决方案是什么?我真的不想诉诸解析错误中的json响应。一旦代码在生产中,我无法控制json,只能在我的开发服务器上进行测试。 – GV1

0

改变你的错误FUNC按键

error: function(jqXHR, error_textStatus, errorThrown) 

,并检查这些:

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

readyState = 4,status = 200,statusText = OK,responseText =我应该获得成功的回应。 – GV1

+0

难道是因为JSON包含反斜杠? – GV1

+0

errorThrown给我:SyntaxError:意外的令牌: – GV1