$ .ajax。调用错误函数,而我获得200 Ok状态和数据作为响应?

时间:2015-09-07 16:34:08

标签: java ajax api

function jsonData() {
    $.ajax({
       async: false,
       url:'http://localhost:8080/libraryapi/BookTransactionController',
      type: 'GET',
      dataType: 'jsonp',
      success: function() { alert("Success"); },
      error: function() { alert('Failed!'); },
});

}

状态是200 Ok并且服务器也在响应json数据但它正在调用错误函数?

Ths Json data response from browser is:
 [{"bookName":"Book","dueDate":"2015-4-8","issueDate":"2015-5-16","studentId":201},
{"bookName":"Book2","dueDate":"2015-4-8","issueDate":"2015-5-16","studentId":211}]

1 个答案:

答案 0 :(得分:0)

即使您在同一台计算机上工作,也会发生这种情况,因为您的API服务器端口和API使用应用程序的端口不同,浏览器不允许跨域资源共享。

解决方案正在实施CORS。有关详细信息,请阅读Mozilla Documentation on CORS

对于您的问题,可能的解决方案是:

如果您的API是Java,请使用:

response.addHeader("Access-Control-Allow-Origin", "*");
上面一行中的

*将允许访问所有域,仅允许访问特定域:

response.addHeader("Access-Control-Allow-Origin", "http://www.example.com");

如果您的API使用的是PHP语言,请使用:

header('Access-Control-Allow-Origin: *');

header('Access-Control-Allow-Methods: GET, POST');

header("Access-Control-Allow-Headers: X-Requested-With");

如果您使用的是Flask Microframework,请使用Flask-CORS