我在我的js中有这个ajax调用。有了这个请求,我想知道是否有先前打开的会话,在这种情况下,它将显示登录表单。
因此,如果没有先前的会话,则服务器返回错误400错误请求(laravel响应类)。但是当服务器返回时,$ .ajax对象不会触发错误功能。谁知道为什么?
服务器响应
$data =[
'error' => [
'message' => 'Authentication Error',
'statusCode' => 400
]
]
Response::json($data, 400, [])
->setCallback(Input::get('callback'));
Ajax请求
$.ajax({
global: true,
method: 'POST',
dataType: 'jsonp',
url: 'http://localhost:8082/api/checkAuth?callback=?',
success: function(response) {
return console.log(response);
},
error: function(a, b, c) {
console.log(a);
console.log(b);
return console.log(c);
}
});
我也试过获取状态代码来触发一个函数,但它无论如何都不起作用:
** Ajax请求**
$.ajax({
global: true,
method: 'POST',
dataType: 'jsonp',
url: 'http://localhost:8082/api/checkAuth?callback=?',
success: function(response) {
return console.log(response);
},
statusCode:{
400: function(a,b,c){
console.log(a);
console.log(b);
console.log(c);
}
}
});
谢谢你们的帮助
一些更新:
感谢manish,我发现这个plugin用于处理jsonp请求,触发了错误功能。有没有人知道在错误函数中捕获返回状态代码的方法?
答案 0 :(得分:0)
您的代码没有问题,它是如何处理json和jsonp响应的。检查this answer以了解如何处理错误响应。你可以使用this plugin 处理jsonp请求 - 响应
答案 1 :(得分:0)
我假设服务器返回400因为它需要POST请求,jsonp只能发送GET请求。您可能希望使用CORS。
,而不是使用jsonp