输出有问题:我想从ajaxcall中填充一些数据。 调用是成功的(每个内部的输出都填充了数据) 但每个issnt内部的输出都附加到外部输出。 我总是说“
<ul id="listname" data-inset=true></ul>
而不是
<ul id="listname" data-inset=true><li>some data</li></ul>
$("div:jqmData(role='collapsible')").each(function(){
var id = $(this).data("id");
var idDate=id.slice(7,18);
var listapp="id_col_"+idDate;
var listname="id_col_"+idDate;
output='<ul id="listname" data-inset=true>';
$.ajax({
url: 'lomodata.php',
data: 'timestamp='+idDate,
type: 'GET',
ContentType: "application/json",
dataType: "json",
success:function(res) {
if(res !='')
{
$.each(res, function(i, Object) {
output+='<li>'+Object.reg+'</li>';
console.log(output);
});
}
}
});
output+='</ul>';
$(this).append(output).trigger("create");
$(this).listview();
$(this).listview('refresh');
});
答案 0 :(得分:2)
请注意,$.ajax
默认为异步,当您到达$(this).append(output)
时,output
尚未定义,因为.ajax()
电话尚未完成。您需要将append
移动到success
处理程序,或添加async: false
选项,以便$.ajax
成为阻止调用(尽管这会违背使用{{}的目的1}}):
ajax
答案 1 :(得分:0)
AJAX是异步的。当您编写$.ajax( ... )
时,HTTP请求将被发送到服务器,然后服务器将继续执行下一个操作output += '</ul>'
。此时HTTP请求将不会完成,因此在您将output
附加到文档时,您的回调将不会被执行。
答案 2 :(得分:0)
$("div:jqmData(role='collapsible')").each(function () {
var el = this;
var id = $(this).data("id");
var idDate = id.slice(7, 18);
var listapp = "id_col_" + idDate;
var listname = "id_col_" + idDate;
$.ajax({
url: 'lomodata.php',
data: 'timestamp=' + idDate,
type: 'GET',
ContentType: "application/json",
dataType: "json",
success: function (res) {
output = '<ul id="listname" data-inset=true>';
if (res != '') {
$.each(res, function (i, Object) {
output += '<li>' + Object.reg + '</li>';
console.log(output);
});
}
output += '</ul>';
el.append(output).trigger("create");
el.listview();
el.listview('refresh');
}
});
});
答案 3 :(得分:0)
如果将使用output
变量的所有代码行移动到ajax调用的成功函数,您将看到它有效。问题是你错误地使用了异步性。
这样的事情:
$.ajax({
url: 'lomodata.php',
data: 'timestamp=' + idDate,
type: 'GET',
ContentType: "application/json",
dataType: "json",
success: function (res) {
if (res != '') {
var output = '<ul id="listname" data-inset=true>';
$.each(res, function (i, Object) {
output += '<li>' + Object.reg + '</li>';
});
output += '</ul>';
console.log(output);
$("#myObject").append(output).trigger("create");
$("#myObject").listview();
$("#myObject").listview('refresh');
}
}
});