我有一个带有 listview 统计信息的 jQuery Mobile 网站。用户可以点击传递弹出窗口的“动作”按钮。根据他们在弹出窗口中的回答,列表视图中的数字/统计数据可能会发生变化。数据库查询成功,但页面没有自动更新;我必须手动刷新它才能看到变化。我正在使用 .post() 来查询数据库(代码在最后)。
我在这里多次看到这个问题,通常使用相同的解决方案。在成功的回调或弹出“afterclose”中,使用:
$('#somelist').listview('refresh');
或者
$("#page").tigger("create");
不幸的是,这些解决方案似乎都不适合我。这对我来说已经成为一个非常令人沮丧的问题,所以我希望有人可以提供帮助!
这是我的代码的缩写版本:
<div id="testdiv">
<ul data-role="listview" data-inset="true" data-theme="a" data-count-theme="a">
<li data-role="list-divider">Combat Round: <?php echo $round; ?><span class="combat_result"></span></li>
<?php
for ($i = 0; $i < $numrows; $i++) {
?>
<li class="combatant" id="combatant_<?php echo $i; ?>"><h3 class="ui-li-heading"><span class="player_name"><?php echo $member[$i]['player_name']; ?></span></h3><span class='ui-li-count'><?php echo $member[$i]['player_total_init']; ?></span>
<p class="ul-li-desc"><strong>Actions Remaining: </strong><span class="remaining"><?php echo $member[$i]['player_actions_remain']; ?></span></p>
</li>
<?php
}
?>
</ul>
</div> <!-- testdiv -->
我通过 JS 查询数据库:
$(document).on('click', '#commit_save', function(e) {
e.preventDefault();
var combatid=$("#save_data_holder").data("combat_id");
var combat_desc=$("#combat_desc").val();
$.post("commit_save.php", {
combatid: combatid,
combat_desc: combat_desc
}, function(data) {
$(".save_result").html(data);
$('#combat_list').listview("refresh");
$("#home").trigger("create");
});
});
还有我的弹窗 JS:
$("#enter_num_actions").popup({
beforeposition: function( event, ui ) {
$("#data_holder").data({"combatant_name": combatant_name, "combat_id": combat_id});
},
afterclose: function( event, ui ) {
$("#testdiv").listview().trigger("create");
}
});
同样,一切正常,除了我必须执行手动刷新以获取要更新的列表视图中的值。如果有人有建议,我将不胜感激。
提前致谢!