2015-09-19 2 views
2

Я работал с ajax и хотел найти ip-адрес хоста, используя ajax.Почему ajax возвращает полную веб-страницу?

Вот мой код:

$.ajax({ 
    url: 'http://ipinfo.io', 
    type: 'GET', 
    data: '', 
    success: function(data) { 
    //called when successful 
    $('#ip').html(data); 
    }, 
    error: function(e) { 
    //called when there is an error 
    console.log(e.message); 
    } 
}); 

Здесь, ф является пустой DIV тег.

Когда я запустил веб-страницу, я получу полную страницу из ipinfo, когда мне нужен только клиентский ip. Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно?

+1

Вы получаете полную веб-страницу с использованием $ .ajax - тогда вы храните ее в 'div id = ip' ... вам нужен только IP, но javascript не знает, чего вы хотите. делает то, что вы ему скажете –

+0

Если вам нужен только IP-адрес, вы должны запросить http://ipinfo.io/ip –

ответ

0

Как отмечалось, добавить /json к URL

затем внести изменения в код

$.ajax({ 
    url: 'http://ipinfo.io/json', <==== 
    type: 'GET', 
    dataType: 'json', // <==== 
    data: '', 
    success: function(data) { 
    //called when successful 
    $('#ip').html(data.ip); // <==== 
    }, 
    error: function(e) { 
    //called when there is an error 
    console.log(e.message); 
    } 
}); 
+0

получил большое спасибо – Tusky

1

Добавить/json в конец запроса. Поэтому позвоните по телефону:

http://ipinfo.io/json 

Вы также можете попробовать форсировать json в качестве типа ответа.

+1

, тогда вам нужно научить его работать с json –

2

Согласно the developer pages для ipinfo.io, они «делают немного магии», чтобы определить, запрашивается ли страница из сценария, и если да, то они дают ответ JSON вместо ответа HTML.

По-видимому, эвристика, которую они использовали, не удалась, поэтому мы хотим явно запросить версию JSON. Исправить это, чтобы вместо этого изменить ваш URL-адрес ajax на http://ipinfo.io/json, что заставит JSON-ответ.


Затем, вы можете получить ip поле из объекта следующим образом:

$.ajax({ 
    url: 'http://ipinfo.io/json', 
    type: 'GET', 
    data: '', 
    success: function(data) { 
    //called when successful 
    $('#ip').text(data.ip); 
    }, 
    error: function(e) { 
    //called when there is an error 
    console.log(e.message); 
    } 
}); 

Рабочая JSFiddle: http://jsfiddle.net/zoxeuqsy/

+0

, тогда вам нужно научить его для работы с json –

+0

@JaromandaX Я обновил свой ответ, чтобы он работал с ответом JSON. Я мог бы поклясться, что я уже прокомментировал это, но я больше не вижу комментария (и я не могу представить, почему мода удалила бы его). –

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