CQ-CSER

计算机爱好者

jquery学习笔记4

Posted on | 二月 25, 2010 | No Comments

$.get(“get1.php”, $(“#form1″).serialize() , function (data, textStatus){
5 $(“#resText”).html(data); // 把返回的数据添加到页面上
6 }
7 );
serialize()方法,参见http://api.jquery.com/serialize/
$.get(“get1.php”, “username=”+encodeURIComponent($(‘#username’).val())+”&content=”+encodeURIComponent($(‘#content’).val()), function (data, textStatus){
6 $(“#resText”).html(data); // 把返回的数据添加到页面上
7 }
8 );
顺便附带get1.php的代码
<?php
 header(“Content-Type:text/html; charset=utf-8″);
 echo “<div class=’comment’><h6>{$_REQUEST['username']}:</h6><p class=’para’>{$_REQUEST['content']}</p></div>”;
?>
 接着是AJAXEVENT函数,及AJAX事件函数 
$(“#loading”).ajaxStart(function(){
32 $(this).show();
33 });
34 $(“#loading”).ajaxStop(function(){
35 $(this).hide();
36 }); //ID=LOADING的是一个图片,也可以是一个DIV包含的动画啦,随便看个人喜好
下面是个聊天室实例
<script type=”text/javascript”>
 //<![CDATA[
  $(function(){
      //定义时间戳
   timestamp = 0;
   //调用更新信息函数
   updateMsg();
   //表单提交
   $("#chatform").submit(function(){
    $.post("backend.php",{
       message: $("#msg").val(),
       name: $("#author").val(),
       action: "postmsg",
       time: timestamp
      }, function(xml) {
     //清空信息文本框内容
     $("#msg").val("");
     //调用解析xml的函数
     addMessages(xml);
    });
    return false; //阻止表单提交
   });
  });
        //更新信息函数,每隔一定时间去服务端读取数据
  function updateMsg(){
   $.post("backend.php",{ time: timestamp }, function(xml) {
    //移除掉 等待提示
    $("#loading").remove();
    //调用解析xml的函数
    addMessages(xml);
   });
    //每隔4秒,读取一次.
   setTimeout('updateMsg()', 4000);
  }
        //解析xml文档函数,把数据显示到页面上
  function addMessages(xml) {
      //如果状态为2,则终止
   if($("status",xml).text() == "2") return;
   //更新时间戳
   timestamp = $("time",xml).text();
   //$.each循环数据
   $("message",xml).each(function() {
       var author = $("author",this).text(); //发布者
    var content = $("text",this).text();  //内容
    var htmlcode = "<strong>"+author+"</strong>: "+content+"<br />";
    $("#messagewindow").prepend( htmlcode ); //添加到文档中
   });
  }
 //]]>
 </script>
demo.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<response>
 <status>1</status>
 <time>1170323512</time>
 <message>
   <author>张三</author>
   <text>沙发!</text>
 </message>
 <message>
   <author>李四</author>
   <text>板凳!</text>
 </message>
</response>
backend.php后台程序:
<?php
// 配置信息:
// 1,数据库连接的具体信息
// 2,我们要存储的消息的数目
// 3,用户进到聊天室的时候消息显示的数目
$dbhost = “localhost”;
$dbuser = “root”;
$dbpass = “root”;
$dbname = “chat”;
$store_num = 10;
$display_num = 10;

 

 

// 错误报告
error_reporting(E_ALL);

// 头部信息
header(“Content-type: text/xml”);
header(“Cache-Control: no-cache”);

//连接mysql
$dbconn = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname,$dbconn);

//为容易操作请求数据,我们为请求中的每个参数设置一个变量,每个变量将把请求中的参数值作为其自己的值
//foreach语句遍历所有的POST数据,并且为每个参数创建一个变量,并且给它赋值
foreach($_POST as $key => $value){
 $$key = mysql_real_escape_string($value, $dbconn);
}

//屏敝任何错误提示,判断action是否等于 postmsg
if(@$action == “postmsg”){
 //插入数据
 mysql_query(“INSERT INTO messages (`user`,`msg`,`time`)
              VALUES (‘$name’,'$message’,”.time().”)”,$dbconn);
 //删除数据(因为我们默认值存储10条数据)
 mysql_query(“DELETE FROM messages WHERE id <= “.
    (mysql_insert_id($dbconn)-$store_num),$dbconn);
}

//查询数据
$messages = mysql_query(“SELECT user,msg
       FROM messages
       WHERE time>$time
       ORDER BY id ASC
       LIMIT $display_num”,$dbconn);
//是否有新记录
if(mysql_num_rows($messages) == 0) $status_code = 2;
else $status_code = 1;

//返回xml数据结构
echo “<?xml version=\”1.0\”?>\n”;
echo “<response>\n”;
echo “\t<status>$status_code</status>\n”;
echo “\t<time>”.time().”</time>\n”;
if($status_code == 1){ //如果有记录
 while($message = mysql_fetch_array($messages)){
  $message['msg'] = htmlspecialchars(stripslashes($message['msg']));
  echo “\t<message>\n”;
  echo “\t\t<author>$message[user]</author>\n”;
  echo “\t\t<text>$message[msg]</text>\n”;
  echo “\t</message>\n”;
 }
}
echo “</response>”;
?>

再来是数据库sql.sql

–Database “chat”

CREATE TABLE `messages` (
  `id` int(7) NOT NULL auto_increment,
  `user` varchar(255) NOT NULL,
  `msg` text NOT NULL,
  `time` int(9) NOT NULL,
  PRIMARY KEY  (`id`)
);

相关文章:

  1. jquery学习笔记3
  2. JQUERY学习笔记5
  3. wordpress备份数据导入
  4. 一级域名和二级域名跨域的解决方案
  5. Sajax/php下ajax简易框架

评论|Comments

留言|Leave a Reply





  • Archives

  • SUNSHINE

  • About

    本博客采用创作共用版权协议,要求署名、非商业用途和保持一致. 转载本博客内容也遵循“署名-非商业用途-保持一致”的创作共用协议.

    订阅

    Search

    Admin