功能没有触发?

时间:2014-03-18 13:05:53

标签: javascript php jquery ajax jsonp

我在我的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请求,触发了错误功能。有没有人知道在错误函数中捕获返回状态代码的方法?

2 个答案:

答案 0 :(得分:0)

您的代码没有问题,它是如何处理json和jsonp响应的。检查this answer以了解如何处理错误响应。你可以使用this plugin 处理jsonp请求 - 响应

答案 1 :(得分:0)

我假设服务器返回400因为它需要POST请求,jsonp只能发送GET请求。您可能希望使用CORS

,而不是使用jsonp