如何使用POST或Jquery的GET方法返回的函数之外的数据?

时间:2014-04-14 20:19:46

标签: javascript jquery json

如何使用POST或Jquery的GET方法返回的函数之外的数据?

我的问题是我通过jquery post方法得到一些数据..问题是每当我得到数据我只能在函数内使用它实际上我希望数据在函数外使用..因为我警告功能以外的数据不起作用......

function getlatlanfromjs() {
    $(document).ready(function() {
        var uid = $(".track_textbox").val();

        $.post("getLatLan.php", {userid: uid}, function(data) {
            var i;
            for (i = 1; i < 2; i++) {                
                initialize(data[i]["latitude"], data[i]["longitude"]);
            }
        }, "json");

        alert(data[1]["latitude"]); //this is actually not alerting..  what is the reason ?
    });
}

3 个答案:

答案 0 :(得分:2)

因为数据变量在此时超出了范围。下面的代码会将数据分配给本地 recievedData ,您可以在处理函数范围之外使用它。虽然您仍然只能在请求完成时才能访问recievedData变量。

$(document).ready(function() {

    var recievedData;
    var uid = $(".track_textbox").val();


    var promise = $.post("getLatLan.php", {userid: uid}, function(data) {
        recievedData = data;
        var i;
        for (i = 1; i < 2; i++) {

            initialize(data[i]["latitude"], data[i]["longitude"]);

        }



    }, "json");

   promise.done(function() {
    alert(recievedData[1]["latitude"]); });

});

答案 1 :(得分:2)

这有点好......

这样你就不会错过执行。如果将代码封装到闭包中,也可以稍后调用它。即使你的&#34; getlatlanfromjs&#34;已执行,您的alertFn仍然存在,并将在$.post完成后调用。

  

function getlatlanfromjs(){       $(document).ready(function(){           var uid = $(&#34; .track_textbox&#34;)。val();

    var alertFn = function(data) { alert(data[1]["latitude"]); };

    $.post("getLatLan.php", {userid: uid}, function(data) {
        var i;
        for (i = 1; i < 2; i++) {                
            initialize(data[i]["latitude"], data[i]["longitude"]);
        }
        alertFn(data);
    }, "json");

}); }

答案 2 :(得分:1)

   var mydata = null;

    function getlatlanfromjs() {
    $(document).ready(function() {
        var uid = $(".track_textbox").val();

        $.post("getLatLan.php", {userid: uid}, function(data) {
            mydata = data;
            var i;
            for (i = 1; i < 2; i++) {                
                initialize(data[i]["latitude"], data[i]["longitude"]);
            }
        }, "json");
        if(mydata != null)   alert(data[1]["latitude"]); 
    });
}

您需要做的就是跟踪数据范围。