Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从成功函数ajax获取变量_Javascript_Jquery_Ajax_Json_Variables - Fatal编程技术网

Javascript 从成功函数ajax获取变量

Javascript 从成功函数ajax获取变量,javascript,jquery,ajax,json,variables,Javascript,Jquery,Ajax,Json,Variables,我在ajax的成功部分有一个变量,我想在另一个函数中重用它(每3秒执行一次),我试图将它声明为全局变量,但它不起作用;Tdata是未知的。 我知道$.ajax是一个异步函数,我看到了一些与我类似的帖子,但它对我没有帮助 请帮帮我。多谢各位 这是我代码的一部分: <script language='Javascript'> var Tdata; $.ajax({ method : "GET", url: "load-data.php

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

var-Tdata;
$.ajax({
方法:“获取”,
url:“load data.php”,
成功:功能(数据){
Tdata=jQuery.parseJSON(数据);
////
}
});
setInterval(函数(){
$(窗口)。加载(函数(){
$.each(Tdata,函数(变量){
/////////////
});
}); 
}, 3000);

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

$.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);
}

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

$.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);
}

为什么不等到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
事件绑定到窗口,因为这样做似乎没有任何意义。我还向传递给
$.ajax()
的options对象添加了一个值为
json
dataType
属性,这样您就不必自己将响应解析为json。

为什么不等到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
事件绑定到窗口,因为这样做似乎没有任何意义。我还向传递给
$.ajax()
的options对象添加了一个值为
json
dataType
属性,这样您就不必自己将响应解析为json了。

试试这个

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

var-Tdata;
$.ajax({
方法:“获取”,
url:“load data.php”,
成功:功能(数据){
Tdata=jQuery.parseJSON(数据);
////
}
});
$(窗口)。加载(函数(){
setInterval(函数(){
$.each(Tdata,函数(变量){
/////////////
});
}, 3000);
}); 
试试这个

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

var-Tdata;
$.ajax({
方法:“获取”,
url:“load data.php”,
成功:功能(数据){
Tdata=jQuery.parseJSON(数据);
////
}
});
$(窗口)。加载(函数(){
setInterval(函数(){
$.each(Tdata,函数(变量){
/////////////
});
}, 3000);
}); 

是回调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 data

tdataAjax(function(data) {

        $.each(data, function(variable) { 

            // code
        });
});
tdataAjax++:)


回调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 data

tdataAjax(function(data) {

        $.each(data, function(variable) { 

            // code
        });
});
tdataAjax++:)


当前代码有什么问题?你每次都得到相同的数据吗?或者还有其他问题吗?不,我不能,Tdata不知道。当前代码有什么问题?你每次都得到相同的数据吗?或者还有其他问题吗?不,我不能,Tdata不知道。