Функция Jquery changPage не останавливает кеширование запросов - PullRequest
0 голосов
/ 23 февраля 2012

Хорошо, поэтому я сделаю все возможное, чтобы объяснить, как это должно работать. Это для мобильного телефона, поэтому я использую Jquery mobile.

1) Пользователь выбирает из списка элементов -> взятых на внешний, еще не на странице DOM.

2) Пользователь помещает форму на другую внешнюю страницу, которая еще не находится в DOM.

3) Эта страница обновляет div каждые 2 секунды, используя этот код, получая статус элемента, который мы только что отправили (обычно требуется около 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>

Странно то, что я могу заставить это работать, но только в первый раз. После того, как я вернусь к этому процессу, исходный файл div #status все еще будет кешироваться и попытаться вернуть меня обратно к #input преждевременно.

Как видите, у меня есть $ ('# status'). Empty (); работает, так должен ли этот div уже уничтожаться, когда он появится в следующий раз?

Спасибо!

1 Ответ

0 голосов
/ 23 февраля 2012

Вот мой рекомендуемый код, но он не опустошит контейнер. Это не исправит вашу первоначальную проблему, однако я думаю, вы найдете, что она работает более плавно. Это будет гарантировать, что вы не отправляете запрос на сервер до того, как завершится предыдущий запрос, что делает 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);

Я был бы рад попытаться устранить вашу первоначальную проблему, но мне нужно больше подробностей, чтобы понять, как именно она работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...