У меня здесь немного кошмар, поэтому любая помощь будет с благодарностью оценена! Во-первых, я объясню, что я пытаюсь сделать:jQuery Длительный опрос (со стороны сервера PHP)
Я пытаюсь реализовать систему, описанную здесь: https://stackoverflow.com/a/1086448/1034392 на моем сервере MAMP-сервера localhost с использованием инфраструктуры Yii. У меня есть функция, которая проверяет, есть ли какие-либо новые уведомления в БД - если да, то они анализируют их, а json кодирует их. У меня есть функция, называемая циклом while каждые 5 секунд.
Итак: Собираюсь/пользователь/unreadNotifications запускает следующую
Yii::log('test'); // to check it's getting called
$this->layout=false;
header('Content-Type: application/json');
// LONG POLLING
while (Yii::app()->user->getNotifications() == null) {
sleep(5);
}
echo Yii::app()->user->getNotifications(); // prints out json if new notification
Yii::app()->end();
return;
Это работает отлично - пошел по ссылке в браузере и проверить реакцию JSon - все хорошо.
Я попытался использовать все виды материалов jQuery, чтобы заставить их работать ... ТОЛЬКО способ, которым я нашел работу, - использовать $.ajax
с типом POST, но ТОЛЬКО, когда есть уведомление о ожидании (так что некоторые json возвращаются). $.get
или $.post
получает «aborted» (отображается в firebug), но URL-адрес вызывается (потому что я вижу, что файл журнала обновляется) - нечетно.
Моя первоначальная настройка с помощью $.get
является:
<script type="text/javascript">
function notificationPoll() {
$.get('<?php echo Yii::app()->createUrl('user/unreadNotifications') ?>','', function(result) {
$.each(result.events, function(events) {
alert('New Notification!');
});
notificationPoll();
}, 'json');
}
</script>
<script type="text/javascript">
$(document).ready(function() {
$.ajaxSetup({
timeout: 60 //set a global ajax timeout of a minute
});
notificationPoll();
});
</script>
Это просто получает "прервана" по какой-то причине. Я пробовал использовать «jsonp», хотя это не запрос CORS .. но это тоже не работает.
Кажется, никуда не денется! Может ли кто-нибудь чип?
Большое спасибо
Забыл упомянуть: когда я использую $ .ajax с типом POST и нет никаких уведомлений для отображения, любая страница сайта, на которой код jQuery просто не загружается, пока не появится уведомление. –
Ошибка журнала консоли ?? вставьте его .. –