У меня тут какой-то кошмар, так что любая помощь будет с благодарностью! Во-первых, я объясню, что я пытаюсь сделать:
Я пытаюсь реализовать систему, как описано здесь:https://stackoverflow.com/a/1086448/1034392на моем локальном сервере MAMP с использованием инфраструктуры Yii. У меня есть функция, которая проверяет, есть ли новые уведомления в БД -, если да, то она их анализирует и кодирует json. У меня эта функция вызывается в цикле while каждые 5 секунд.
Итак, :переход к /user/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
получает сообщение «прервано» (, отображаемое в firebug ), но URL-адрес называется (, потому что я вижу, что файл журнала обновлен)-странный.
Моя исходная установка с использованием $.get
— :
. Это просто "прервано" по какой-то причине. Я пробовал с «jsonp», хотя это не запрос CORS.но это тоже не работает.
Кажется, с этим никуда не деться! Кто-нибудь может скинуться?
Большое спасибо