php教程笔记复习1-ajax

1.省市联动2.用户名无刷新验证3.股票信息的实时更新4.天气预报5.qq聊天室

ajax代理

ajax回传的数据格式:字符串,xml,json

注意:eval("("+json+")"); eval存在一定的安全缺陷,一般无伤大雅

json的数据格式:
{ "paramArray":
[{"param1":"str1","param2":"str2","param3":"str3"},{"param1":1,"param2":"str2","param3":"str3"}],
"array":["param1":"str1","param2":"str2","param3":"str3"],"param":"simple"
}
ajax的基本语法--数据传送方式

1.xmlRequest.open("get",url,true)//打开连接,但是并没有发送
  xmlRequest.send(null);    //设为null
2.xmlRequest.setrequsetheader("content-type":"");//必须的
  xmlRequest.open("post",url.true)    //true:表示异步,false:表示同步
  xmlRequest.send(data);    //需要传送的数据

---省市联动
xxx.js

function  creatXmlHttp()
{   
var xmlrequest=null;   try
  
{     xmlrequest= new XMLHttpRequest();   }catch
  
{   try{   xmlrequest=new ActiveXObject("Microsoft.XMLHTTP");   }catch
  
{   alert("sorry.your explore don't support this function");   }   return xmlrequest; } functon $get(id){ return document.getElementById(id); //.value取节点值 }

xxxpro.php

<?php
header("Content-Type:text/html;charset=utf-8");  //此处与返回格式对应
header("Cache-Control:no-cache");
$cityList=$_POST["cityList"];
for(i=0;i<count(cityList);i++)
{//暂时不操作数据库
  if(cityList(i)=="city1")
  {     echo
"{"subcity11":"city1","subcity12":"city2","subcity13":"city3"}";   }
  else if(cityList(i)=="city2")
  {//json $res.='{"cityname":'.$cities[$i].',"price":'.rand(500,1500).'}';     echo
"{"subcity11":"city4","subcity12":"city5","subcity13":"city6"}";
  } } ?>

xxxview.php

<select id="pro" onchange="sendRequest();">
<option value=""></option>
<option value="city1">city1</option>
...
<select/>
<select id="city" value="">
...
<select/>

<script type="text/script" language="javascript">
function sendRequest()
{
  var xmlRequest=creatXmlHttp();//注意用法
  var data="city[]=city1&city[]=city2&city[]=city3";
  var url="xxxpro.php?cityList="+data;
  xmlRequest.setRequestHeader("Content-Type:");
  xmlRequest.open("Post",url,true);
  xmlRequst.onreadystatechange=profun;    //一个是函数的引用,一个是赋函数的地址。profun带不带()的区别
  xmlRequest.send(data);
}
function profun()
{
  if(xmlRequest.readystate=4 && xmlRequest.status=200)
  {
      $get("city").length=0;
      var subCityList=eval("("+xmlRequest.responseText+")");   //responseXML,返回类型为xml对象(xml dom)
      var subcitys =xmlRequest.responseXML.getElementsByTagName;
      var val =mes[0].childNodes[0].nodeValue;
      for(var i=0;i<subcitys;i++)
    {
      var city_name=subCityList[i].childNodes[0].subcity11;
      var subcity=document.createElement("option");//注意语法
      subcity.value=city_name;
      subcity.innerText=city_name;
      $get("city").appendChild(subcity);
        ...
    }
  }
}

</script>

 

小知识:
1.<?php
?>   //当此文件为被引用文件时,最好不必带上。
     //当此文件引用其他文件时,最好带上。
2.ie下的get ajax,如果url不发生变化,ie会从缓存中取数据,而不真正的发生请求。----解决方法:为url加上时间戳(new Date()),或者在服务器回送结果时,禁用浏览器缓存
3.边输入边验证  onkeyup="ajax()"
4.dom 分为 xml dom和html dom
5.smarty->assign($list);   //smarty提供数据展现方式
6.js typeof(var)   //返回变量类型
7.js 中的数组长度length, size(),php中的数组长度count($arr);
8.xml是最通用的数据格式
9.js 定时器 setInterval(函数名,5000);
10.file_put_contents("文件名","写入内容",写入方式);
11.FILE_APPEND          //向指定文件中添加指定信息,此方式为调试程序的神器

数据库知识点:
1.表过大会影响查询速度,解决办法合理分表。
2.数据库群集,定时回传,(手机漫游,qq的通讯方式)

posted @ 2014-03-02 14:10  曹桦伟  阅读(233)  评论(0编辑  收藏  举报