1

我在 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

4 回答 4

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。json$.ajax()

于 2012-09-27T13:43:59.740 回答
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);
}
于 2012-09-27T13:41:56.597 回答
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>
于 2012-09-27T13:44:45.730 回答
1

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

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
        });
});
于 2012-09-27T13:44:57.867 回答