Как решить проблему с jsonp?

Задача: заставить js загонять в переменную region значение города.

В таком виде выдает следующую ошибку:
SyntaxError: missing ; before statement


В чем может быть проблема? Раньше нормально работало по ссылке ru.smart-ip.net/geoip-json , но сервис сдох.

Сейчас заменой ссылки дело не исправляется.

<script type="text/javascript">
$(function() {
var link2 = "http://geoip.elib.ru/cgi-bin/getdata.pl?fmt=json";
$.ajax({
      type: "GET",
      url: link2,
     
      crossDomain: true,
      dataType: "jsonp",
      success: function(res) {
      var region = res.Town;
      console.log(region);


}


});
});



</script>


Пробовал с другим сервисом htmlweb.ru/geo/api.php?json&ip

Та же беда.

Спасибо.
  • Вопрос задан
  • 3622 просмотра
Пригласить эксперта
Ответы на вопрос 1
subalex
@subalex
Вы запрашиваете данные в JSONP формате, а приходят они в JSON.

Или найдите сервис, который умеет отдавать данные в JSONP, или же нужно делать прокладку. Т.к. кросдоменный аякс запрещен, кроме JSONP.

На PHP такая прокладка - это 1 строка кода:

<?php echo file_get_contents('http://geoip.elib.ru/cgi-bin/getdata.pl?fmt=json'); ?>


Ваш JS код будет выглядеть, в таком случае:

<script type="text/javascript">
$(function() {
var link = "линк на прокладку";
$.getJSON(link, function(res) {
      var region;
	  
	for (var ip in res)
		region = res[ip].Town;
		
      alert(region);
});
});
</script>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы