我试图在服务器上触发错误后使用自定义json编码数据 (在jquery ajax请求下故意抛出错误。)
我不明白出了什么问题,因为标题是正确的,数据到了。但似乎异常参数没有传递给javascript中的异常回调。
php代码
<?php
if ( valid_input() )
{
...
}
else // The validation goes wrong so, I have to return error
{
// Error code
header('HTTP/1.1 500 Format does not match');
header('Content-Type: application/json');
die(json_encode(array('message' => 'Bad format', 'code' =>1000)));
}
?>
javascript代码
$("#uploadbutton").on('click',function(e)
{
$.ajax({
url:"http://www.oneurl.com/upload.php",
async:true,
type:'post',
data:formdata
})
.done(render_data)
.fail(upload_error);
});
//
function render_data(params) {...}
function upload_error(jqxhr,textstatus,ex)
{
alert("Error:-> ", ex.message);
}
来自服务器的响应
Status Code: 500 Format does not match
Content-Type: application/json
Response: {"message":"Bad Format","code":1000}
但警告未定义而是Bad Format。 有什么问题?¿
答案 0 :(得分:1)
response
存储为responseText
参数的jqXHR
属性。它以JSON字符串形式返回,因此您需要先JSON.parse
才能直接访问属性。
function upload_error(jqxhr,textstatus,ex)
{
var response = JSON.parse(jqxhr.responseText);
alert("Error:-> ", response.message);
}