2011-01-02 2 views
1

Проще говоря, мне нужно предупредить конечного пользователя, когда у него есть новое личное сообщение. Из сочетания исследований и других мнений я понимаю, что для этого нужно использовать AJAX.Используйте AJAX для проверки нового сообщения

Запрос MySQL будет

SELECT id FROM tbl_messages WHERE to_viewed = 1 

Так что, когда кто-то посылает сообщение, я хочу, оповещает всплывающее окно на экране, чтобы сообщить пользователю без перезагрузки страницы.

У меня нет абсолютно никакой идеи, что я делаю, но знаю, чего я хочу. На самом деле нужна помощь в этом, AJAX - это то, что я хочу улучшить, поскольку оно открывает большие возможности!

Благодаря

+1

Вы должны сообщить нам, какой язык/фреймворк вы используете, PHP, ASP, ASP.NET, Python, Ruby/Rails? – Kev

+0

Извините, используя PHP. – sark9012

ответ

1

У вас есть два варианта на стороне клиента:

  1. опрос через Ajax: каждые Х секунды, отправить запрос на сервер для проверки сообщений.

  2. Нажатие на сервер через комету: откройте подключение к серверу и дождитесь, пока сервер ответит сообщением.

Существует множество библиотек клиентской стороны. Для Ajax вы можете использовать JQuery. Для кометы взгляните на Dojo, но ваш сервер/платформа должна поддерживать Comet. Я знаю, что это возможно с Java, использующей Jetty, но я не уверен в других платформах.

+0

Если я пойду с AJAX, не могли бы вы подтолкнуть меня в правильном направлении? – sark9012

+1

Скажите, хочу ли я проверять каждые 45 секунд. – sark9012

+2

Тогда вам нужно взять урок Javascript. Существует функция setInterval, которая вызывает функцию после x миллисекунд. jQuery или Mootools могут абстрагировать вызовы AJAX достаточно хорошо, я бы порекомендовал jQuery, если вы не используете Javascript. – Xorlev

7

Использование jQuery для краткости, если у вас нет опыта работы с JavaScript, я рекомендую учиться.

var check; 
function checkForMessages() { 
    $.get("/newMessages.php", function(data) { 
     if(data == 1) { 
      //There are new messages 
      clearInterval(check); 
      alert("You have new mail!"); 
     } 
    }); 
} 

check = setInterval(checkForMessages, 60000); 

Вышеупомянутый JavaScript будет выполнять ping-сервер каждые 60 секунд. Сценарий «newMessages.php» должен возвращать «1», если появляются новые сообщения. У вас уже есть запрос, поэтому я думаю, вы можете понять это.

+0

Эй, я знаю, что это год, но у меня такая же проблема, как у него. Во всяком случае, я просмотрел этот фрагмент, и у него есть setInterval, а затем clearTimeout. Разве это не должно быть ясно? –

+1

@JohnathanAu Хорошая добыча! Я обновил код, спасибо! –

+0

Выполняется из фрагмента снова. Как бы вы постоянно проверяли новые сообщения, потому что прямо сейчас он останавливается после получения нового сообщения и никогда не проверяет его снова? = S –

Смежные вопросы