1、ajax一般用于当前页面,不实现页面跳转
2、ajax端:怎样异步得监听服务器端的状态呢?通过onreadystatechange监听readystate属性
request.onreadystatechange = function() {
if (request.readyState===4) {
0:请求未初始化(还没有调用 open())。
1:请求已经建立,但是还没有发送(还没有调用 send())。
2:请求已发送,正在处理中(通常现在可以从响应中获取内容头)。
3:请求在处理中;通常响应中已有部分数据可用了,但是服务器还没有完成响应的生成。
4:响应已完成;您可以获取并使用服务器的响应了。
所以一般都是判断等于4之后进行相应的操作。
但注意这个和request的status是不一样的
比如readystate=4但是status=404表示响应完成但是响应的内容是没有找到文件
所以一般做法是==200的时候返回内容,其他就显示发声错误即可。
注意在post请求中要设置url 成encode,及url解码,否则不能正确给出结果
request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
但是url解码会有一个问题,由于进行urlencoded的时候加号会自动解码成空格,&会被解码成变量连接符,所以如果出现这些字符必须要进行转码
(在做canvas上传图片的url的时候遇到了这个问题)
Pic = Pic.replace(/\+/g, "%2B");
Pic = Pic.replace(/\&/g, "%26");
3、服务器通过echo来返回给传递ajax的界面。
(提示:zendstudio内置的浏览器对于ajax的页面总是会显示上一次的页面,所以改成在外置浏览器里运行
preference-general-web browser里面设置。)
如果只返回一行简单的,可以不用jason,jason可以更方便返回不同键值的数据。
1
2
3
4
5
Demo6
7 body, input, select, button, h1{
8 font-size:28px;
9 line-height:1.7;
10 }
11
12
13
14
15
16
员工查询
17
18 请输入员工编号:
19
20 查询
21
22
23
员工新建
24 请输入员工姓名:
25
26 请输入员工编号:
27
28 请选择员工性别:
29
30 女
31 男
32
33 请输入员工职位:
34
35 保存
36
37
38
39 document.getElementById("search").οnclick= function() {40 varrequest= newXMLHttpRequest();41 request.open("GET","serverjson.php?number=" +document.getElementById("keyword").value);42 request.send();43 request.onreadystatechange= function() {44 if(request.readyState===4) {45 if(request.status===2