2013-06-11 2 views
0

Я пытаюсь реализовать небольшое приложение для чата, где пользователь может общаться в чате с любым из онлайн-пользователей. Моя логика это нечто вроде следующего:разработать модуль чата в php, mysql и ajax jquery

Login first. 

Fetch the users who are online from DB and show them as list of online users. 

Click on the users, then another small window is opening for text chatting. 

Create a form(two hidden fields- one is for sender id and another is for receiver id, one textarea and a button for submitting) for this chatting. 

Through jQuery, fill the value of receiver id. 

By session id, fill the value of sender id. 

After submitting the button, I call a page through ajax jquery which is responsible to insert and show the current data from DB. 

Мой код ajaxJquery, как:

$(document).ready(function(){ 
     $('#send_btn').click(function(){ 
      var receiver_id = $('#hide_receiver_id').val(); 
      var sender_id = $('#hide_sender_id').val(); 
      var messagebox = $('#messagebox').val(); 

      $.ajax({ 
       type:"POST", 
       url:"chat_history.php?receiver_id="+receiver_id+"&sender_id="+sender_id+"&message="+messagebox, 
       success:function(result){ 
        $('#history').html(result); 
       } 

      }); 
      $('#messagebox').val(''); 
     }); 
    }); 
</script> 

До этого, его прекрасно работать. Но мне нужно автозагрузить часть <div id="history"></div>. Для этого также я собираюсь сделать, используя setInterval() в jQuery. Мой код, как:

<script type="text/javascript"> 
    var auto_refresh = setInterval(
    function(){ 
    $('#history').load("chat_history.php?receiver_id=''&sender_id=<?php echo $_SESSION['id']?>&message=").fadeIn("fast"); 
    }, 1000); // refresh every 1000 milliseconds 
</script> 

Но в этом случае, как передать значение receiever_id в load(), которое необходимо, чтобы выяснить, соответствующие данные из БД? Пожалуйста, дайте мне знать, освобождено ли вам требование или нет.

Заранее спасибо.

+0

Объединить два сценария, так что переменная receiver_id доступна для setInterval fucntion – Dale

+0

На самом деле первый сценарий будет выполняться, если нажатие кнопки будет срабатывать и вторые один для автозагрузки. Тогда как объединить два сценария? – Mausumi

ответ

0
<script> 
    $(function() { 

     // function wide variables 
     var receiver_id = $('#hide_receiver_id').val(); 
     var sender_id = $('#hide_sender_id').val(); 
     var messagebox = $('#messagebox').val(); 

     // button click 
     $('#send_btn').click(function() { 
      receiver_id = $('#hide_receiver_id').val(); 
      sender_id = $('#hide_sender_id').val(); 
      messagebox = $('#messagebox').val(); 

      $.ajax({ 
       type : "POST", 
       url : "chat_history.php?receiver_id=" + receiver_id + "&sender_id=" + sender_id + "&message=" + messagebox, 
       success : function (result) { 
        $('#history').html(result); 
       } 
      }); 
      $('#messagebox').val(''); 
     }); 

     var auto_refresh = setInterval(function(){ 
      $('#history').load("chat_history.php?receiver_id="+receiver_id+"&sender_id=<?php echo $_SESSION['id']?>&message=").fadeIn("fast"); 
     }, 1000); // refresh every 1000 milliseconds 
    }); 
</script> 
+0

Но те receiver_id, sender_id будут обнаружены после нажатия кнопки отправки. Поэтому до этого он не будет доступен. – Mausumi

+0

@Mausumi Вот почему они также объявлены наверху – Dale

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