我正在从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问题。)
答案 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的路由。