我想将data.ip值存储在更新变量中。
alert( "Your ip: " + data.ip)显示正确的IP地址值,但alert(ipdata)显示未定义

$(document).ready(function () {

    var ipdata;

    $.getJSON("http://jsonip.appspot.com?callback=?",
        function(data){
            ipdata=data.ip;
            alert( "Your ip: " + data.ip);
        });
        alert(ipdata);
    });

});

最佳答案

由于无法在ajax调用的回调方法中分配ipdata=data.ip;,因此无法正常工作。 Ajax调用本质上是异步的,这意味着一旦将请求发送到服务器,alert(ipdata);将在执行ajax callbacl函数之前得到执行。

因此,您要使用ipdata进行的所有处理都必须在回调函数中完成

$(document).ready(function () {

    var ipdata;

    $.getJSON("http://jsonip.appspot.com?callback=?",
        function(data){
            ipdata=data.ip;
            alert( "Your ip: " + data.ip);
            alert(ipdata);
        });
    });

});

关于javascript - 无法将函数值存储在变量中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16263049/

10-10 00:41