如何在MySQL中插入Ajax代码来获取新行?

时间:2014-09-13 04:24:58

标签: php mysql ajax

我有一个简单的聊天服务。我在Mysql数据库中存储消息,登录和时间等。在Ajax& amp;帮助下,聊天消息显示在下面。 PHP

<div id="messages"> </div><!--- chats are displayed here -->

我有跟随Ajax代码,它每2秒从Mysql中获取数据。当然,每个人都建议不要这样做。它可能对服务器性能产生负面影响。而且没必要。

$(document).ready( function() {

     var destination_hashed = $("#destination_hashed").val();

     var interval = setInterval( function() {

            $.ajax ({
                     type: "POST",
                     url: "chat.php",
                     data: { destination_hashed1: destination_hashed },

                     success: function(data) {
                            $("#messages").html(data);
                     }
             });
     }, 2000);
});

简而言之,我有两个聊天客户A&amp; B.当A向B发送消息时,在Mysql中插入新行。

那么,我怎么能写Ajax&amp; PHP代码仅在有新行时才能获取。而不是每2秒从Mysql获取数据是否插入新行

1 个答案:

答案 0 :(得分:1)

最近我参与了这种聊天模块,我可以在你的代码中说一些修正

首先,请勿以您使用的方式使用setInterval

为什么

因为在您的特定代码中,请求每2秒发送一次,因此如果网络速度慢,您的代码将倾向于向服务器发送大量请求,并且这些请求之间的协调将很困难。

所以你做的是

function getNewMessage(){

            $.ajax ({
                     type: "POST",
                     url: "chat.php",
                     data: { destination_hashed1: destination_hashed },

                     success: function(data) {
                            $("#messages").html(data);
                     },
                     complete : function(){  // this will be called even if our request fail, success etc
                         setTimeout(function(){   // send request after 2 second from the complition of the previous request
                             getNewMessage();       
                         },2000);
                     }
             });

}

解析来自ajax调用的聊天结果有两种方法

a)从ajax调用获取html(如果你想在将来扩展你的模块,这将是缓慢而低效的)

你可以简单地从ajax调用的succes调用获取html内容,你可以将其附加到表

 For example : -

   if the response from the server on new message is 

     <div class="chat"> 
       <lable>John</lable>
         Hi there !!!
    </div>

然后解析内容将是这样的

             success: function(data) {
                    // $("#messages").html(data);   //this will change the content in every request
                    $("#messages").append(data);   // this will append the new conent
             },

b)那么另一个approch就是以json格式获取数据(更好的方法)

例如: -

   if the response from the server on new message is 

     { 
       username : 'john',
       message  : 'Hi there !!!'
     }

然后解析内容将是这样的

             success: function(data) {
                    // $("#messages").html(data);  this will change the content in every request
                    $("#messages").append('<div class="chat">'+
                                            '<lable>'+data.username+'</lable>'+
                                              data.message +
                                          '</div>');    this will append the new conent
             },