1、ajax是什么 ? ① ajax(asynchronouse javascript and xml) 异步的javascript 和 xml ② 是7种技术的综合,它包含了七个技术( javascript xml xstl xhtml dom xmlhttprequest , css), ajax 是一个粘合剂, ③ ajax是一个与服务端语言无关的技术. 即可以使用在(php/java ee/.net网站/ asp) ④ ajax可以给客户端返回三种格式数据(文本格式 ,xml , json格式) ⑤ 无刷新数据交换技术有以下: flash, java applet, 框架,
2、iframe, ajax) u ajax 的运行原理分析 看一个需求: u ajax在什么地方用的多 1 动态加载数据,按需取得数据。【树形菜单、联动菜单.../省市联动】 2 改善用户体验。【输入内容前提示、带进度条文件上传...】 3 电子商务应用。 【购物车、邮件订阅...】 4 访问第三方服务。 【访问搜索服务、rss阅读器】 5. 数据的布局刷新 u 经典的案例 使用ajax与服务器通信的的步骤 ① 创建一个XMLHttpRequest对象 ② 创建url,data,通过 xmlHttpRequest.
3、send() ③ 服务器端接收 ajax的请求,做相应处理(操作数据库),然后返回结果(echo 语句) ④ 客户端通过xmlHttpRequest的属性 reponseText , responseXML 取的数据,然后就完成局部刷新当前页面任务 1. 使用 ajax完成用户名的验证 register.php
10、rm action="???" method="post">
用户名字:
用户密码:
电子邮件:
registerpro.php
11、 //这里两句话很重要,第一讲话告诉浏览器返回的数据是xml格式 header("Content-Type: text/xml;charset=utf-8"); //告诉浏览器不要缓存数据 header("Cache-Control: no-cache"); //接收数据 $username=$_GET['username']; if($username=="shunping"){ echo "用户名不可以用";//注意,这里数据是返回给请求的页面. }else{ echo "用户名可以用"; } ?>
12、 u ajax的post方式请求 在前面案例我们修改一下 : 关键代码 register.php var url="/ajax/registerProcess.php"; //这个是要发送的数据 var data="username="+$('username').value; //打开请求. myXmlHttpRequest.open("post",url,true); //还有一句话,这句话必须. myXmlHttpRequest.setRequestHeader("Content-Type","applicat
13、ion/x-www-form-urlencoded"); //指定回调函数.chuli是函数名 myXmlHttpRequest.onreadystatechange=chuli; //真的发送请求,如果是get请求则填入 null即可 //如果是post请求,则填入实际的数据 myXmlHttpRequest.send(data); registerPro.php关键码 : $username=$_POST['username']; ☞ 使用get方式发出请求,如果提交的用户名不变化,浏览器将不会真的发请求,而是缓存取数据., url
14、 解决方法 1. url 后带一个总是变化的参数,比如当前时间 var url="/ajax/registerProcess.php?mytime="+new Date()+"&username="+$("username").value; 2. 在服务器回送结果时,禁用缓存. //这里两句话很重要,第一讲话告诉浏览器返回的数据是xml格式 header("Content-Type: text/xml;charset=utf-8"); //告诉浏览器不要缓存数据 header("Cache-Control: no-cache");
15、 u ajax如何处理返回的数据格式是xml的情况 register.php
24、 regisgerProcess.php
25、me=="shunping"){
$info.="
26、扩展 如果服务器返回的json 是多组数据,则格式应当如下: $info="[{"属性名":"属性值",...},{"属性名":"属性值",...},....]"; 在xmlhttprequest对象接收到json数据后,应当这样处理 //转成对象数组 var reses=eval("("+xmlHttpRequest.responseText+")"); //通过reses可以取得你希望的任何一个值 reses[?].属性名 ③ 更加复杂的json数据格式 u 小结: 当一个ajax请求到服务器,服务器可以根据需求返回 三种格式的数据,那么我们应当选择哪一个? 1. 如果你的项目经理没有特殊的要求,建议使用json 2. 若应
29、用程序不需要与其他应用程序共享数据的时候, 使用 HTML 片段来返回数据时最简单的 3. 如果数据需要重用, JSON 文件是个不错的选择, 其在性能和文件大小方面有优势 4. 当远程应用程序未知时, XML 文档是首选, 因为 XML 是 web 服务领域的 “世界语” u ajax的省市联动案例(如何动态的从服务器取得数据) showCities.php页面
**showCitiesProcess.php**37、der("Content-Type: text/xml;charset=utf-8"); //告诉浏览器不要缓存数据 header("Cache-Control: no-cache"); //接收用户的选择的省的名字 $province=$_POST['province']; file_put_contents("d:/mylog.log",$province."\r\n",FILE_APPEND); //如何在调试过程中,看到接收到的数据 。 //到数据库去查询省有那些城市(现在先不到数据库) $info=""; if($province=
38、"zhejiang"){
$info="
39、http-equiv="content-type" content="text/html;charset=utf-8"/>
![]() | ||
| 市场 | 最新价格$ | 涨跌 |
| 伦敦 | 788.7 | |
| 台湾 | 854.0 | 146.0 |
| 东京 | 1791.3 | 791.3 |
45、ntent-Type: text/html;charset=utf-8");
//告诉浏览器不要缓存数据
header("Cache-Control: no-cache");
//接收
$cities=$_POST['city'];
//随机的生成 三个 500-2000间数
//$res='[{"price":"400"},{"price":"1000"},{"price":"1200"}]';
$res='[';
for($i=0;$i 46、s)-1){
$res.='{"cityname":"'.$cities[$i].'" ,"price":"'.rand(500,1500).'"}]';
}else{
$res.='{"cityname":"'.$cities[$i].'" ,"price":"'.rand(500,1500).'"},';
}
}
file_put_contents("d:/mylog.log",$res."\r\n",FILE_APPEND);
echo $res;
?>
晚上的练习
1. 把省市联动 和数据库
2. 把黄金价格波动的 上下箭头指示做出来
3. 把用户管理系统(信息共享系统),使用更加规范的mvc模式开发(引入smarty)
如果我们的代码比较复杂,可以通过
file_put_contents来输出信息到某个日志文件.(!!!!!!!)






