好的,所以我会尽力解释这是怎么回事。这是针对移动设备的,所以我使用的是Jquery mobile。
1)用户从项目列表中选择 - >尚未在DOM页面中使用外部。
2)用户将表单发送到尚未在DOM中的另一个外部页面。
3)此页面每2秒刷新一次div,使用此代码获取我们刚刚提交的元素的状态(大约需要15秒才能到达我们的最终状态点)。
<script>
$('#status').empty();
setInterval(function() {
$('#status').load('/call/status/<?php echo $call->sid?>');
}, 2000);
</script>
4)一旦达到最终状态消息,我们想要刷新并将它们带到第一组元素中的元素(在第1点)。我正在使用此代码作为最终消息,以将更改页面事件触发回第一组页面。
<script>$.mobile.changePage("#inbox",{transition:"slideup"} ); </script>
奇怪的是,我可以让这个工作,但只是第一次。一旦我回到这个过程,它原来的#status div仍然被缓存,并试图过早地将我带回#input。
你可以看到我有$('#status')。empty();如果这个div在下次出现时已经被销毁了吗?
谢谢!
答案 0 :(得分:0)
这是我推荐的代码,但这不会清空容器。这不会解决您的初始问题,但我认为您会发现它的工作更顺畅。这将确保您在上一个请求完成之前没有将请求发送到服务器,setInterval会这样做,它不知道请求是否已经完成。我推荐(当你要涉及任何服务器调用时,甚至是任何时候真的.SetInterval没有任何好处)至少使用这种方法,而不是间隔。
function status(){
$('#status').load('/call/status/<?php echo $call->sid?>', function(){
//this is to be performed on success of the load
setTimeout(status, 2000);
});
}
setTimeout(status, 2000);
我很乐意尽力解决您的初始问题,但我需要更多详细信息才能确切了解其工作原理。