Ajax失败,但直接访问URL时调用成功

时间:2014-03-19 14:23:53

标签: javascript jquery ajax firebug

我正在从firebug进行以下AJAX调用:

var rootUrl = 'http://172.24.105.22:8080/geoserver/Chennai_Sub/ows';

var defaultParameters = {
    service: 'WFS',
    version: '1.0.0',
    request: 'GetFeature',
    typeName: 'Chennai_Sub:Link',
    maxFeatures: 200,
    outputFormat: 'application/json',
    format_options: 'callback: getJson'

};

$.ajax({
    url: rootUrl,
    data: defaultParameters,
    success: function () {
        console.log("victory");
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        console.log(textStatus);
    }
});

AJAX调用失败。这是我得到的响应对象的一部分:

readyState  4
status  404
statusText  "error"

但是当我实际尝试在浏览器中打开URL(http://172.24.105.22:8080/geoserver/Chennai_Sub/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=Chennai_Sub%3ALink&maxFeatures=200&outputFormat=application%2Fjson&format_options=callback%3A+getJson)时,我得到了一个干净的JSON响应。对我做错了什么的想法?

(另外,我在此URL中尝试了firebug会话:http://172.24.105.22:3000/layer。所以我不认为这是CORS问题。)

3 个答案:

答案 0 :(得分:1)

这可能不是正确的解决方案,但我相信不同的端口可能会导致此类问题。

来自上面的评论

  

AJAX请求只允许在同一个域,协议和   由于同源政策导致的港口。

维基百科对此有何评价: http://en.wikipedia.org/wiki/Same-origin_policy

答案 1 :(得分:0)

我无法访问提供的任何网址,也许您的服务器也无法访问它们,虽然您的本地计算机可能能够访问它们?确保您的网站可以访问目标网址。此外,如果您从与目标服务器相同的服务器调用AJAX请求,我建议使用相对URL而不是绝对URL。

如果上述方法不起作用,另一个选项是使用jQuery的$.get请求而不是$.ajax

$.get('http://172.24.105.22:8080/geoserver/Chennai_Sub/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=Chennai_Sub%3ALink&maxFeatures=200&outputFormat=application%2Fjson&format_options=callback%3A+getJson', function(response) {
console.log(response);
})

或者

$.get('http://172.24.105.22:8080/geoserver/Chennai_Sub/ows', defaultParameters, function(response) {
console.log(response);
})

答案 2 :(得分:0)

好吧,首先是404,这意味着客户端能够与服务器通信,但服务器无法找到所请求的内容。因此,只需确保theres实际上是该rootURL的路由。