проблема с обратным вызовом jsonp

Я пытаюсь использовать следующий код для получения IP-адреса клиента, и он отлично работает

<script type="text/javascript">  
    function getip(json) {
        var ip = json.ip; // alerts the client ip address
        alert(ip);
    }
</script>
<script type="text/javascript" src="http://jsonip.appspot.com/?callback=getip"></script>

но когда я пытаюсь это сделать с $.ajax, ничего не происходит...

    $.ajax({
        type: "GET",
        url: 'http://jsonip.appspot.com/?callback=getip',
        dataType: "jsonp",            
        success: function getip(json) {
            alert("sucess");
            var ip = json.ip;
            alert(ip);
        }

    });

});

помогите пожалуйста


person Rafay    schedule 09.02.2011    source источник


Ответы (3)


$.ajax({
    type: "GET",
    url: "http://jsonip.appspot.com/?callback=?",
    //                                        ^
    // ---- note the ? symbol ----------------|
    // jQuery is responsible for replacing this symbol
    // with the name of the auto generated callback fn
    dataType: "jsonp",
    success: function(json) {
        var ip = json.ip;
        alert(ip);
    }
});

демонстрация jsFiddle здесь.

person Salman A    schedule 09.02.2011

Вы видели URL-адрес, который передается по сети? Я предлагаю вам попробовать {jsonp: false, jsonpCallback: "callbackName"}. Это предотвратит автоматическое добавление jquery функции обратного вызова.

Также вы установили для перекрестного домена значение true.?

person uncaught_exceptions    schedule 09.02.2011

Вам не нужно добавлять какой-либо параметр обратного вызова в URL.

Если вы попробуете статью http://terrasus.com/detail.jsp?articleID=396 шаг за шагом все будет хорошо. если вы создаете ответ jsonp, вы должны получить значение обратного вызова и динамически установить его для своего ответа. В этой статье есть подробное объяснение.

person vitralyoz    schedule 12.06.2014
comment
Попробуйте включить содержание ссылки в свой ответ. Все внешние ссылки доступны не всем пользователям. - person Kashish Arora; 12.06.2014
comment
Я не хочу писать все вещи здесь. Я ленив для этого. Я просто хочу поделиться решением - person vitralyoz; 12.06.2014