проблема обратного вызова jsonp - PullRequest
2 голосов
/ 09 февраля 2011

Я пытаюсь использовать следующий код для получения 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);
        }

    });

});

PLZ Help

Ответы [ 3 ]

4 голосов
/ 09 февраля 2011
$.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 demo здесь.

3 голосов
/ 09 февраля 2011

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

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

0 голосов
/ 12 июня 2014

Вам не нужно добавлять в URL любой параметр callback .

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

...