我正在使用一个移动应用程序,其中第一页有
Html
<ul>
<li>121212</li>
<li>123233</li>
<li>232323</li>
<li>4323423</li>
<ul>
当用户点击"li"时,他/她进入下一个页面,该页面将通过Ajax
检索与所选"li"相关的数据。这几乎进展顺利。。
但当Ajax
的响应出现页面波动2次时。意味着一次页面加载,下一次页面全白,然后再次显示Ajax
响应的页面。为什么?
J查询
$("clickOnLi").click(function(){
var id= $(this).val(); //get the selected li value
$('.loadingGif').css({ 'display':'block' });
$("#ulShowContent").html(''); // to remove old inner HTML to show new result html
var dataString = 'selectedid='+id;
$.ajax({
type: "POST",
url: remoteUrl+"handler.php",
data : dataString,
cache: true,
success: function(response) {
if(response){
$('.loadingGif').css({ 'display':'none' });
$("#ulShowContent").html(response);
}
}
});
})
**and the result will show in this html**
<ul id="ulShowContent" data-role="listview">
<li class="comment chatsend">
<div class="comment-meta">
data 1
</div>
</li>
<li class="comment chatsend">
<div class="comment-meta">
data 2
</div>
</li>
</ul>
您需要更改处理页面更改和AJAX调用的方式。
我从您的问题中了解到,在单击LI
元素后,页面更改被初始化,AJAX
调用被发送到PHP
服务器。
你需要改变这种逻辑。页面波动是由AJAX
调用引起的,该调用在从一个页面转换到另一个页面的过程中执行。
可以这样修复:
- 在第一页上,从列表元素中删除
HREF
属性 - 向每个列表元素添加一个单击事件
-
AJAX
调用应在单击事件时执行,同时显示自定义加载程序(或使用默认加载程序) - 当检索服务器端数据时,您需要存储它,以便可以从另一个页面访问它。在这里,您可以找到我的另一个答案,在那里您可以找到在页面转换期间存储数据的各种方法,或者在这里找到它,只需搜索一章,名为:页面转换之间的数据/参数操作(您最好的选择是
localstorage
) - 使用
changePage
函数初始化页面更改 - 在
pagebeforeshow
事件期间(页面尚未显示),将新数据附加到新容器 - 当第二页最终显示时,一切都会在那里