我使用$ .getJSON从PHP脚本接收一些数据(JSON编码)。它由10个数据集组成({“key”:“data”,...})。我想打印所有数据,首先淡出旧的sting,然后用新的替换它,最后将其淡入。这将在循环中发生。
处理数据集时,函数调用自身并获取接下来的10个数据集以进行打印。等等。
function getText(){
$.getJSON("getText.php",
function(data){
for(key in data){
//alert(key);
if($("#wrapper").css("display") == "block")
$("#wrapper").fadeOut(500);
$("#wrapper").html(data[key]).fadeIn(500);
}
});
//alert("end");
setTimeout(function(){
getText();
},20000);
}
通过一些警报显示正确的数据集,但没有它们只显示数据集中的最后一个或第一个数据。有人可以帮我吗?!
简化只有一个div(#wrapper)。页面加载并显示一些信息后,第一次调用函数getText。现在调用PHP脚本,我们收到十个数据集。在函数再次调用自身之前,应显示其中的每一个。例如:淡入包装器,显示数据#1,淡出包装器;淡入包装器,显示数据#2,淡出包装器,依此类推,直到显示每个数据(十个)。循环应该以某种方式等待动画。并且应该替换包装器中的文本。
答案 0 :(得分:1)
鉴于您的更新,请尝试:
function getText(){
var storage = {};
$("#wrapper").html('').fadeOut(500);
$.getJSON("getText.php",
function(data){
storage.data = data;
});
for (var i in storage.data)
{
$("#wrapper").html(storage.data[i]).fadeIn(500).delay(5000).fadeOut(500);
if (i == storage.data.length-1)
{
setTimeout(function(){
getText();
},50000);
}
}
}
OR
setInterval('getText',20000);
function getText(){
var storage = {};
$.getJSON("getText.php",
function(data){
i = (typeof(storage.i) != "undefined") ? storage.i : 0;
setInterval(function() {
$("#wrapper").fadeOut(500).html(storage.data[i]).fadeIn(500);
storage.i = i+1;
},2000);
});
}
答案 1 :(得分:0)
那么,我认为,这是+/-你在寻找什么......
function getText(){
$.getJSON("getText.php", function(data) {
var keys = [];
for(var key in data){
keys.push(key);
}
function displayData() {
var key = keys.pop();
$("#wrapper").html(data[key]).fadeIn(500, function(){
if(keys.length>0) {
// Still some data available ..
displayData();
} else {
// All data has been displayed .. get some new from server ..
getText();
}
});
}
// If some data is available, show first ..
if(keys.length>0) {
displayData();
}
});
}