我使用Ajax加载xml并将其整形为jQuery Mobile列表视图。 在发送xml之后,我正在调用触发器方法,以便可以重新初始化页面,并且可以将css样式添加到listview中,如下所示:
xmlhttp.send();
$("#page1").trigger( "create" );
当我加载页面时,我会在listview上看到样式的时间不到一秒钟,但是listview会显示没有jQuery Mobile样式。当我使用延迟时似乎有效:
setTimeout(function(){
$("#page1").trigger( "create" );
}, 5);
我注意到这一点,因为当我使用断点时它总是起作用。这让我感到困扰,因为当我使用这种方法时,我总能在短时间内看到未经编程的列表。我也尝试在创建之前和之后刷新列表,但似乎没有一个工作。有没有人知道解决这个问题的方法?
答案 0 :(得分:1)
AJAX请求是异步的,这意味着在响应等待时其他代码会运行。使用AJAX请求的一般流程是对请求的回调函数中接收的数据执行任何操作。以下是使用jQuery AJAX的示例:
$.ajax({
url : 'my-page.html',
success : function (response) {
$("#page1").html(response).trigger('create');
},
error : function (jqXHR, textStatus, errorThrown) { /*remember to handle errors*/ }
});
这假定服务器响应是有效的HTML,并且您希望将#page1
的内容替换为来自服务器的响应。