jQuery Ajax问题

时间:2011-03-17 15:01:45

标签: jquery ajax

我试图找出我在这里做错了什么。基本上我正试图从以下方面获得成功的回调:

http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer/project?f=pjson&inSR=4326&outSR=102113&geometries={"geometryType":"esriGeometryPoint","geometries":[{"x":-117,"y":34}]}

当将它粘贴到浏览器中时,我得到数据,当我在Javascript中执行此操作时,它不起作用,因为它调用错误处理程序。有任何想法吗?我用fiddler来比较请求,发现没什么区别。

$.ajax({
    type: 'GET',
    url: 'http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer/project?f=pjson&inSR=4326&outSR=102113&geometries={"geometryType":"esriGeometryPoint","geometries":[{"x":-117,"y":34}]}',
    success:    function(data){ 
        alert('success');
    },
    error: function(jqXHR, textStatus, errorThrown){
        alert('error');
    }   
});

5 个答案:

答案 0 :(得分:4)

添加json参数:

$.ajax({
    type: 'GET',
    dataType : 'jsonp',
    url: 'http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer/project?f=pjson&inSR=4326&outSR=102113&geometries={"geometryType":"esriGeometryPoint","geometries":[{"x":-117,"y":34}]}',
    success:    function(data){ 
        alert('success');
    },
    error: function(jqXHR, textStatus, errorThrown){
        alert('error');
    }   
});

答案 1 :(得分:2)

您需要发出jsonp请求。在jQuery 1.5中,您可以将crossDomain设置为true。

答案 2 :(得分:2)

除非您的网站位于sampleserver1.arcgisonline.com,否则您将遇到跨网站脚本问题。

要缓解它们,您可以:

  1. 通过您自己服务器上的代理将您的请求发送到您的网站。
  2. 如果您要求提供信息的域支持,请使用JSPONP

答案 3 :(得分:0)

你可以使用http://api.jquery.com/jQuery.getJSON/并设置你的jsonp回调

$.getJSON('http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer/project?f=pjson&callback=?&inSR=4326&outSR=102113&geometries={"geometryType":"esriGeometryPoint","geometries":[{"x":-117,"y":34}]}', function(res)
{

});

类似的东西可能会起作用,请注意& callback =?在已添加的查询字符串中。

答案 4 :(得分:0)

我想我可能遇到过同样的问题。从我的角度来看,似乎ESRI有一种理解状态代码的有趣方式。

问题是你从服务器收到了200回,这应该意味着成功。但是,您从ESRI收到的传输是错误的。我与ESRI ajax调用的关系是解析响应......

parse: function(response) {
    if (response.error) { //If there is a server error, it will find it here.
        this.searchError(response.error); //I would then send to the error function.
    }
    return response.features
}