JQuery Ajax Проблема - PullRequest
       1

JQuery Ajax Проблема

1 голос
/ 17 марта 2011

Я пытаюсь понять, что я делаю здесь не так. В основном я пытаюсь получить успешный обратный вызов от:

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 ]

4 голосов
/ 17 марта 2011

Добавить параметр jsonp:

$.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');
    }   
});
2 голосов
/ 17 марта 2011

Если ваш сайт не находится по адресу sampleserver1.arcgisonline.com, вы сталкиваетесь с проблемами межсайтового скриптинга.

Чтобы уменьшить их, вы можете:

  1. Выполнить запрос черезпрокси на вашем сервере для вашего сайта.
  2. Используйте JSPONP , если домен, к которому вы запрашиваете информацию, поддерживает это.
2 голосов
/ 17 марта 2011

Вам нужно сделать запрос jsonp. В jQuery 1.5 вы можете установить для crossDomain значение true.

0 голосов
/ 10 сентября 2012

Думаю, у меня была такая же проблема. С моей точки зрения, у 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
}
0 голосов
/ 17 марта 2011

Вы, вероятно, могли бы использовать 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 =?в строке запроса, которая была добавлена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...