JQuery проблема использования геоплугина - PullRequest
0 голосов
/ 21 января 2011
$.getJSON("http://www.geoplugin.net/json.gp?ip=117.201.92.17",function(data){alert(data);});

Этот код работает нормально, но ответ URL пустой. Однако, если я захожу на тот же URL, скопировав его, он работает. Есть идеи почему?

Ответы [ 2 ]

3 голосов
/ 21 января 2011

Согласно этой странице (ссылка) :

AJAX и ошибка: недопустимая метка

Если вы используете jQuery дляНапример, для выполнения вызовов AJAX в веб-службе JSON вы, вероятно, увидите ошибку Javascript. Ошибка: недопустимая метка. Чтобы устранить эту ошибку, добавьте тег jsoncallback =?на URL при вызове jQuery Ajax в любой веб-сервис JSON, например,

$.getJSON("http://www.geoplugin.net/json.gp?jsoncallback=?",
function (data) {
  for (var i in data) {
      document.write('data["i"] = ' + i + '<br/>');
  }
);

Поэтому я добавил это и создал скрипку здесь (ссылка) , чтобы показать, что она работает.1016 *

0 голосов
/ 21 января 2011

Документы на http://api.jquery.com/jQuery.getJSON/ состояние:

Важное замечание: Начиная с jQuery 1.4, если файл JSON содержит синтаксическую ошибку, запрос обычно завершается молча.По этой причине избегайте частого ручного редактирования данных JSON.JSON - это формат обмена данными с синтаксическими правилами, которые являются более строгими, чем те, которые используются в литеральной нотации JavaScript.Например, все строки, представленные в JSON, будь то свойства или значения, должны быть заключены в двойные кавычки.Подробнее о формате JSON см. http://json.org/.

Возвращаются ли данные в допустимом формате JSON?Почему бы не попробовать другой подход:

$.ajax({
  url: url,
  dataType: 'json',
  data: data,
  success: callback
});

Таким образом, вы можете отбросить json dataType и убедиться, что вызов работает, возвращая любые данные, json или нет.

Также помните, что из-заиз-за ограничений безопасности браузера запросы ajax подчиняются той же политике происхождения;запрос не может успешно получить данные из другого домена, субдомена или протокола.

...