jQuery.parseJSON 和 HTTP 状态
jQuery.parseJSON and HTTP Status
我正在尝试 return 带有 402 状态代码和 JSON 内容的 http 响应,没问题,但是当我尝试使用 JQuery.parseJSON(json).
$response = new \Zend\Http\Response();
$response->setStatusCode(402);
$response->setContent(json_encode([
"success" => false,
"message" => "You need to buy more credits"
]));
return $response;
那我试试看回复内容:
search: function(term, callback){
$.post("/api/v1/client/search", {term: term}).always(function(data){
callback(jQuery.parseJSON(data));
});
},
我收到以下错误:"Uncaught SyntaxError: Unexpected token o"。当我使用 200 状态代码时一切正常,但是当我将其更改为 402 时,我遇到了这个问题。
我不知道这是否会发生,因为浏览器没有将状态代码作为响应本身来传递响应主体,但这不会改变服务器已发送消息的事实。
有什么方法可以阅读吗?
我是不是做错了什么?
谢谢。
我已经解决了这个问题。当我在 PHP 中更改我的状态 header 时,我检测到 jQuery 返回的 object 发生了变化。当状态码为200时,jQueryreturns一个字符串,当状态码为402时,jQueryreturns一个object,而我要找的文字是这个object.
的"responseText"属性
http://i.imgur.com/T7fuInW.png
我的解决方案是:
search: function(term, callback){
$.post("/api/v1/client/search", {term: term}, function(data){
callback(JSON.parse(data));
})
.fail(function(data){
callback(JSON.parse(data.responseText));
});
},
我正在尝试 return 带有 402 状态代码和 JSON 内容的 http 响应,没问题,但是当我尝试使用 JQuery.parseJSON(json).
$response = new \Zend\Http\Response();
$response->setStatusCode(402);
$response->setContent(json_encode([
"success" => false,
"message" => "You need to buy more credits"
]));
return $response;
那我试试看回复内容:
search: function(term, callback){
$.post("/api/v1/client/search", {term: term}).always(function(data){
callback(jQuery.parseJSON(data));
});
},
我收到以下错误:"Uncaught SyntaxError: Unexpected token o"。当我使用 200 状态代码时一切正常,但是当我将其更改为 402 时,我遇到了这个问题。
我不知道这是否会发生,因为浏览器没有将状态代码作为响应本身来传递响应主体,但这不会改变服务器已发送消息的事实。
有什么方法可以阅读吗? 我是不是做错了什么?
谢谢。
我已经解决了这个问题。当我在 PHP 中更改我的状态 header 时,我检测到 jQuery 返回的 object 发生了变化。当状态码为200时,jQueryreturns一个字符串,当状态码为402时,jQueryreturns一个object,而我要找的文字是这个object.
的"responseText"属性http://i.imgur.com/T7fuInW.png
我的解决方案是:
search: function(term, callback){
$.post("/api/v1/client/search", {term: term}, function(data){
callback(JSON.parse(data));
})
.fail(function(data){
callback(JSON.parse(data.responseText));
});
},