我试图找出我在这里做错了什么。基本上我正试图从以下方面获得成功的回调:
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');
}
});
答案 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,否则您将遇到跨网站脚本问题。
要缓解它们,您可以:
答案 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
}