Это допустимая разметка JSON? - PullRequest
3 голосов
/ 26 июня 2010

Я пытаюсь получить некоторую информацию с российского сайта доставки.Будучи n00b для JSON / Jquery / Internets, я застрял, получая данные в формате json.

Следуя API компании, я перехожу по URL: http://emspost.ru/api/rest/?callback=json&method=ems.calculate&from=city--abakan&to=city--anadyr&weight=1

Это возвращает:

json({"rsp":{"stat":"ok","price":"750","term":{"min":5,"max":9}}})

Следуя документации Jquery, я попытался:

<script>$.getJSON("http://emspost.ru/api/rest/?callback=json&method=ems.calculate&from=city--abakan&to=city--anadyr&weight=1",
        function(data){
        alert(data);
        });</script>

Возвращает ноль.Есть идеи, что я делаю не так?

Ответы [ 2 ]

5 голосов
/ 26 июня 2010

Вместо этого используйте callback=?, например:

$.getJSON("http://emspost.ru/api/rest/?callback=?&method=ems.calculate&from=city--abakan&to=city--anadyr&weight=1",
function(data){
  alert(data);
});

Тогда вы получите ваш объект в оповещении :) JSONP работает, принимая этот обратный вызов в строке запроса и вызывая эту функцию (которая не 't существует, если только вы не сделали function json() {}, когда он вернется. Когда вы выполните ?callback=? jquery, динамически присваивает этой функции success, которую вы дали $.getJSON(), и заменяет ее следующим образом: ?callback=FunctioNameGivenтак что он на самом деле будет работать правильно.

Если вы думаете о том, как он работает, это в основном:

<script type="text/javascript">
  //returned javascript here, e.g. FunctioNameGiven({ object data });
</script>

Это сделано так, что это запрос GET, и не ограничивается тем жеправила политики источника, вот как работает JSONP, когда обычный запрос JSON блокируется:)

1 голос
/ 26 июня 2010

Вы используете функцию обратного вызова (callback = json), которая запускает функцию json при загрузке.

Попробуйте вместо этого ПОЛУЧИТЬ:

http://emspost.ru/api/rest/?method=ems.calculate&from=city--abakan&to=city--anadyr&weight=1

Кстати, ваш запрос междоменный? Если это так, xhr не предлагается.

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