2015-07-29 5 views
0

я могу получить данные из ipinfo.io с $ .get(), как показано ниже:

$.get("http://ipinfo.io", function(response) { 
     alert(response.city); 
    }, "jsonp"); 

указанных работ. Но когда я пытаюсь использовать $ .getJSON для этой цели, я больше не получаю данные. Мой код:

$.getJSON(
     "http://ipinfo.io/?callback=callback?", function(response) { 
     alert(response.city); 
     } 
    ).fail(function(){ 
     console.log("failed"); 
    }); 

"? Callback = callback?" часть в url указана в ipinfo.io documentation.

Иногда это показывает «Слишком много запросов», что нормально. Но большую часть времени он терпит неудачу без какой-либо ошибки. Что я делаю не так?

ответ

0

Согласно docs

Если URL содержит строку "обратного вызова =?" (или аналогичный, как определено API-интерфейсом на стороне сервера), вместо этого запрос обрабатывается как JSONP. Дополнительную информацию см. В обсуждении типа данных jsonp в $ .ajax().

Так изменить код из callback=callback? в callback=? так:

$.getJSON(
     "http://ipinfo.io/?callback=?", function(response) { 
     alert(response.city); 
     } 
    ).fail(function(){ 
     console.log("failed"); 
    }); 

Если вебсервис используется другой параметр, чем обратный вызов для JSONP обратного вызова вы бы изменить эту часть соответственно. Например, если ваш сервер использовал results=, вместо этого был бы URL-адрес "http://coolwebservice.io/?results=?"

1

Изменить "http://ipinfo.io/?callback=callback?""http://ipinfo.io/?callback=?.

$.getJSON(
    "http://ipinfo.io/?callback=?", function(response) { 
    alert(response.city); 
    } 
).fail(function(){ 
    console.log("failed"); 
}); 
0

старый пост, но кто-то вроде меня может найти ответ. Сохраните файл в html или php, хотя код в нем может быть json. , используйте либо get, либо GETJSON, последний, если вы хотите, чтобы выход был json.

Смежные вопросы