ajax应用2
1get和post方式的ajax请求ajax对象.open(get/post,请求地址); 1.1 两者的不同① 给服务器传递数据量 get方式的大小是受限于浏览器,大部分浏览器是2k的限制 每个浏览器的限制不一样 chrome就是8K http://网址/index.php?name=tom 上述请求通过get方式传递了9个字节的信息 1024字节 = 1k post原则没有限制,php.ini对其限制为8M ② 安全方面,post传递数据较安全 ③ 传递数据的形式不一样 get方式在url地址后边以请求字符串形式传递参数 http://网址/index.php?name=tom&age=23&addr=beijing 蓝色部分就是请求字符串,就是一些“名-值”对,中间使用&符号连接。 post方式是把form表单的数据给请求出来以xml形式传递给服务器 1.2 ajax之get方式请求ajax之get请求需要注意的两个地方: ① 在url地址后边以请求字符串(传递的get参数信息)形式传递数据。 ② 对中文、=、&等特殊符号需要编码处理 对特殊信息的处理: 在浏览器里通过get参数传递一些特殊符号信息会被误解混淆,例如 & = 等,浏览器会把这样的信息当做get参数的一部分而进行一个错误的解析,为了避免这种情况发生,可以对该信息进行编码处理。有的浏览器传递中文会出现不识别问题,也可以进行编码处理。 (编码后的信息是相对底层的信息,浏览器会自动识别,获取的时候无需反编码) ①.在php里边可以函数 urlencode()/urldecode()对特殊符号进行编码、反编码处理 ②.在javascript里边可以通过encodeURIComponent ()对特殊符号等信息进行编码。 (以上红色函数可以把”特殊符号、中文”转变为浏览器可以识别不会混淆的信息。 编码后的信息为%号后接两个十六进制数)
在php中通过get方式传递特殊符号可以通过urlencode()进行处理: 1.3 ajax之post方式请求ajax之post请求需要注意的四个地方: ① 给服务器传递数据需要调用send(请求字符串数据)方法 ② 调用方法setRequestHeader()把传递的数据组织为xml格式(模仿form表单传递数据) ③ 传递的中文信息无需编码,特殊符号像 &、=等 仍需要编码 ④ 该方式请求的同时也可以传递get参数信息,同样使用$_GET接收该信息 (form表单的数据是通过xml格式发送给服务器端的) ajax进行post请求:
总结: 1. ajax对象创建 var xhr = new XMLHttpRequest(); var xhr = new ActiveXObject(‘Msxml2.XMLHTTP.6.0’); 2. ajax对象成员 a) 属性:responseText、readyState、onreadystatechange b) 方法:open()、send()、setRequestHeader() 3. get请求和post请求 ---------------------------------------------------------------------------------------------- 2. 同步、异步ajax对象.open(方式get/post,url地址,[异步true]/同步false); ajax是可以与服务器进行(异步或同步)交互的技术之一。 异步:同一个时间点允许执行进程。 同步:同一个时间点只允许执行一个进程。 2.1 什么时候使用同步请求ajax绝大多数情况下进行异步请求,但是有的时候也要使用“同步请求”(其不能被取代)。例如页面有两部分内容,①ajax请求内容 和 ②正常的html内容输出,如果html的输出内容包括ajax请求的内容,就需要使得ajax请求完成了再进行html内容的输出,这样就要设置两者一前一后调用(而非同时调用),既要进行同步请求。 3. ajax无刷新分页效果1. 无刷新分页的必要性如果我们通过“传统方式”实现上图的商品评论分页效果,每次分页的时候就会使得头部、左侧、底部等已经显示的信息重新从服务器获得出来,这样对带宽、服务器资源、用户等待时间都有额外的损耗。如果使用ajax无刷新分页,每次就只从服务器获得“商品评论区域”信息即可,对各方面资源的使用就有相应节省。因此ajax无刷新分页效果有其存在必要性。 2. 具体实现商品总记录条数、每页显示多少条 mysql数据库关键字limit。 limit 偏移量,长度。 偏移量:(当前页码-1)*每页显示条数。 limit 0,7 limit 7,7 limit 14,7 ajax无刷新分页是对传统分页效果的封装: http://网址/data.php?page=1 http://网址/data.php?page=2 http://网址/data.php?page=3 http://网址/data.php?page=4 ajax对象.open(‘get’,’./data.php?page=3’); 以上是ajax通过无刷新方式获得第3页数据 制作ajax无刷新分页效果页面加载完毕通过ajax无刷新方式获得第1页信息: 在page.class.php里边把超链接的地方都改为ajax函数的调用: 4. ajax对xml信息的接收和处理php可以接收处理xml信息 javascript也可以接收处理xml信息 开发微信接口,微信里边大部分数据都是通过xml形式给组织起来的 这样就有需求,php的网站要和微信进行数据交换 静态网站(html/css/javascript)也要这微信进行数据交换 客户端(javascript+dom)<-----------ajax<-------------服务器端的xml信息 ajax负责请求xml和接收xml信息,dom负责处理xml信息 dom: php里边,dom是php与xml(html)之间的沟通桥梁 javascript里边,dom是javascript与html(xml)之间沟通桥梁 xml需要从服务器端返回到客户端被javascript处理 ajax:负责请求xml回来 DOM(javascript):负责处理xml信息 掌握ajax+javascript对xml的接收处理技术,可以方便我们后期实现静态网站(html+css+javascript)对各个xml接口数据的处理。 5. ajax对缓存的处理缓存: 浏览器的一次请求需要从服务器获得许多 css、img、js 等相关的文件,如果每次请求都把相关的资源文件加载一次,对 带宽、服务器资源、用户等待时间 都有严重的损耗,浏览器有做优化处理,其把css、img、js等文件在第一次请求成功后就在本地保留一个缓存备份,后续的每次请求就在本身获得相关的缓存资源文件及可以了,可以明显地加快用户的访问速度。 css、img、js等文件可以缓存,但是动态程序文件例如php文件不能缓存,即使缓存我们也不要其缓存效果。(IE浏览器会缓存动态程序文件) 浏览器对动态程序文件缓存的处理解决: ① 给请求的地址设置随机数[推荐] ② 给动态程序设置header头信息,禁止浏览器对其缓存 第一次10.php请求回来后,就给其存入缓存,供后续请求使用。 提示304(not modified)说明请求的是本地缓存文件: 设置随机数,避免出现缓存效果 禁止浏览器缓存当前动态页面 总结: 1. 同步、异步 ajax对象.open(请求方式,地址,[true异步]/false同步) 2. ajax无刷新分页效果实现 ① 实现传统分页效果 ② ajax对传统分页效果实现封装 ajax对象.open(get,‘./data.php?page=n’); 3. ajax对xml信息的接收和处理 responseXML: 以xmldocument文档对象形式返回xml信息 document文档对象/元素对象. getElementsByTagName(); 4. 缓存处理 ① 给请求地址设置随机数[推荐] ② 给动态页面设置header头,禁止浏览器缓存 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |