【发布时间】:2014-01-09 08:42:35
【问题描述】:
在从 ajax 调用中获取一些数据后,我正在尝试更新列表。它的工作原理是这样的
$.ajaxSetup({
async: false
});
$.ajax(jsonUrl, {
dataType: "json",
success: function(data) {
$.each(data.list, function(k,v) {
addOutput("doing something with "+v);
(...)
}
},
(...)
});
$.ajaxSetup({
async: true
});
添加输出:
function addOutput(text, color) {
color = typeof color !== 'undefined' ? color : '#fff';
var date = new Date();
var h = ("0"+date.getHours()).slice(-2);
var m = ("0"+date.getMinutes()).slice(-2);
var s = ("0"+date.getSeconds()).slice(-2);
var li = "<li style='background-color: "+color+"; padding: 2px; pading-left: 3px;'>"+h+":"+m+":"+s+" - "+text+"</li>"
$("#output_list").prepend(li);
}
addOutput(text) 正在向输出控制台添加一个新的
我在这里停止异步,因为循环中有另一个 ajax 调用根据列表发送一些请求,但我猜这不是问题,因为我已经在没有它的情况下测试了输出。所以我认为它与jQuery.each有关?
更新:添加了 addOutput
【问题讨论】:
-
看不到“text”变量的设置位置?!
-
async是您可以通过.ajax()方法传递的选项,无需执行您的$.ajaxSetup() -
这只是一个示例,显示 addOutput 获取一些文本以显示为某个 div 中的列表元素。一种控制台窗口。元素添加得很好,但我的问题是它们都在 $.each 之后立即显示,而 $.each 仍在运行。
-
您找到解决方法了吗?我现在正面临同样的问题。