如何进行跨域ajax调用

时间:2013-05-02 05:29:27

标签: php jquery ajax jsp

我可以访问一个API,它是一个JSP文件,采用JSON格式。我试图将这些数据从JSP页面提取到PHP脚本并处理它们然后存储在我的MySQL服务器中。

JSON字符串在我在少量JSON Formatter和验证器在线检查的JSP页面中有效。

这是我用来从页面获取JSON数据的代码,但每次我的ajax调用都失败时。

$('#button').click(function(e){
var url = 'http://xxxxx:8080/StudentAPI/index.jsp';
$.ajax({
    url : url,
    dataType : 'json',
    success : function(response) {
        alert('Success');
    },
    error : function(request, textStatus, errorThrown) {
        alert(request+textStatus+errorThrown);
    }
});
e.preventDefault();
})

请帮助我,并且总是欢迎以更好的方式做任何建议。

1 个答案:

答案 0 :(得分:3)

您正在进行跨域ajax调用。所以如果你像普通的ajax调用一样尝试它就不会工作。

一种方式就是

  1. 在您向其发出ajax请求的服务器端将“Access-Control-Allow-Origin”设置为“*”。

  2. 然后在设置变量中使用'crossDomain'属性'true'进行jquery ajax调用。

  3. 另一种方法是使用jsonp

    取决于您使用的服务器,您可以找到如何添加cors in this article

    更新

    她是a w3c article,它描述了如何在java servlet中配置cors。请参阅在Java servlet 部分。

    关键在于提供ajax响应的服务器应该具有 "Access-Control-Allow-Origin"字段在响应标头中设置为"*"