几个月前我使用 Laravel 4.1 构建了一个 Web 系统,在我的请求中我使用了 Response::json();将数据返回到 jquery ajax。
- 200 返回成功并被 ajax 的 .done() 捕获。
- 400 返回失败/错误并被 ajax 的 .fail() 捕获。
效果非常好!
现在的问题是,我正在使用 Laravel 4.2 构建另一个 Web 系统,并且使用相同的错误代码 200 和 400...200 工作正常,但 400 不起作用,因为例如:
Laravel
<?php
public function example()
{
if (Input::get('param1') === 'value1') {
return Response::json(array(
'msg' => 'Correct!'
), 200);
}
return Response::json(array(
'msg' => 'Incorrect!'
), 400);
}
?>
jQuery(我使用相同的 jquery 版本:1.10.2)
$.ajax({
url: 'example',
type: 'post',
dataType: 'json',
data: {param1: 'value1'},
})
.done(function(data) {
console.log(data.msg);
})
.fail(function(data) {
console.log(data.msg);
})
.always(function() {
console.log("complete");
});
在这两种情况下,请求都正确返回 json,但是...
当正确/200时,ajax的.done()在控制台中正确显示消息,但如果是错误/400,ajax的.fail()不显示消息,而是显示未定义,我不知道发生了什么。
希望你能帮助我。
已解决
检查我的 self 回答。
最佳答案
已解决
我可以使用以下命令在失败时接收 json:
fail(function(jqXHR)) {
console.log(jqXHR.responseJSON.msg);
}
并且工作正常!
关于php - Laravel,使用jquery ajax返回响应400错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24917786/