从成功函数ajax获取变量

时间:2012-09-27 13:33:28

标签: javascript jquery ajax json variables

我在ajax的成功部分有一个变量,我想在另一个函数(每3秒执行一次)中重用它,我试图将它声明为全局,但它不起作用; Tdata不得而知。 我知道$ .ajax是一个异步函数,我看到一些类似于我的帖子,但它没有帮助我。

请帮帮我。谢谢。

这是我的代码的一部分:

<script language='Javascript'> 
var Tdata;


$.ajax({
            method : "GET",
            url: "load-data.php",
            success : function(data){
                Tdata=jQuery.parseJSON(data);
                          ////
            }

});

window.setInterval(function() { 

    $(window).load(function() {

                $.each(Tdata, function(variable) {  
                /////////////
                });

    }); 

}, 3000);


</script>

4 个答案:

答案 0 :(得分:3)

为什么不等到AJAX请求在开始间隔之前成功返回数据?由于间隔函数的任何执行都不会在该点之前做任何事情(由于没有数据)等待不会改变页面以任何方式运行的方式。

$.ajax({
    method: "GET",
    url: "load-data.php",
    dataType: "json"
    success: function(data) {
        var Tdata = data;
        // do some more stuff with the response of the AJAX request
        var interval = setInterval(function() {
            $.each(Tdata, function(variable) {  
                // do something with variable
            });
        }, 3000);
    }
});

请注意,每次间隔运行时,我都已将load事件的绑定删除到窗口,因为这样做似乎没有任何意义。我还向传递给dataType的选项对象添加了值为json的{​​{1}}属性,因此您不必自己将响应解析为JSON。

答案 1 :(得分:2)

应该从AJAX内部成功调用使用AJAX调用变量的函数,如下所示:

$.ajax({
        method : "GET",
        url: "load-data.php",
        success : function(data){
            Tdata=jQuery.parseJSON(data);
            myFunction();
        }
});

function myFunction(){
        var interval = setInterval(function() { 
                $.each(Tdata, function(variable) {  
                /////////////
                });
        }, 3000);
}

答案 2 :(得分:2)

试试这个,

<script language='Javascript'> 
var Tdata;


$.ajax({
            method : "GET",
            url: "load-data.php",
            success : function(data){
                Tdata=jQuery.parseJSON(data);
                          ////
            }

});

 $(window).load(function() {
window.setInterval(function() { 



                $.each(Tdata, function(variable) {  
                /////////////
                });



}, 3000);
 }); 

</script>

答案 3 :(得分:1)

是回调tdataAjax函数ajax成功方法运行; @param parseJSON

var tdataAjax = function(callback) {

    $.ajax({
        method : "GET",
        url: "load-data.php",
        success : function(data){

            var Tdata=jQuery.parseJSON(data);

            setInterval(function() { 

                callback(Tdata);
            }, 3000);

       }

    });
};

是tdataAjax函数中的回调函数@param数据

tdataAjax(function(data) {

        $.each(data, function(variable) { 

            // code
        });
});

tdataAjax ++ :)

 tdataAjax(function(data) {

        $.each(data, function(variable) { 

            // cla bla
        });
});
相关问题