我在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>
答案 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
});
});