ajax注意

来源:互联网 发布:mac显示u盘隐藏文件 编辑:程序博客网 时间:2024/04/29 17:13

C:\Users\Anikin\Desktop\ajax
  用js异步(非阻塞模式)的操作 XML
1.ajax能且仅能从服务器读取文件(都是以文本的形式存在的或者数据交互),但是有多种应用类型。

注意:字符集编码的问题和缓存问题【缓存的机制:是根据地址缓存,只要地址不一样,

就不会缓存】--解决办法:ajax('a.txt?t='+new Date().getTime(),function(str){.....})

2.eval:计算字符串里面的值和将字符串处理掉(很强大的字符串处理函数),一般是读取服务

器上面的json。


3.ajax原理:http请求的方法:
get--用于获取数据,把数据放在url(网址)里面提交,安全性很低,容量很低,便与分享,

传递类型少
post-用于上传数据,数据放在其他地方提交,post安全一般,容量很大(在64服务器几乎

无限),传递类型多

4,js里面,用一个不存在的变量,会直接出错。如果用一个不存在的属性的时候,会是 underfined;

全局的变量还是全局的属性都是window的一个属性;
同步:阻塞模式  异步:非阻塞

5.创建Ajax对象,

var oAjax = new XMLHttpRequest();
但是在ie6下是有问题的
oAjax = new ActiveXObject("Microsoft.XMLHTTP");

处理兼容也可以使用try,,catch来处理
try{...这句如果有错误就开始执行catch里面,,,,,.}catch(e){.....e代表错误}
 链接服务器,
 发送请求,
 接受返回信息 oAjax.onreadystatechange = function()当状态值改变的时候触发的事件

工作状态:
oAjax.readyState=0,刚初始化完成
oAjax.readyState=1,send调用完成
oAjax.readyState=2,载入完成,已收到全部响应
oAjax.readyState=3,开始解析响应的内容
oAjax.status服务器状态
oAjax.readyState=4,代表结束,但是不代表成功与否oAjax.status==200  代表成功 404

代表找不到 300多是重定向  400多是客户端错去    500多是服务器错误 
oAjax.responseText服务器发回来的内容,得到的内容都是字符串的形式。

服务器返回数据的类型所要处理的方法:

xhr.open('post','2.post.php',true);

把字符串转成数组或者json的方式,也就是前后端数据交互

JSON对象,ie兼容可以利用库来实现【http://www.json.org---json2.js】支持json
stringify:


get: 在url后面多余--> ?user=Anikin&password=0928

工作当中请求的处理:

1:get方式,存在缓存, 只能传递字符串

xhr.open('post','2.post.php?user=Anikin&password=0928',true);用这种方式传递,具

体是根据后端给你的接口自己去拼;

消除缓存:xhr.open('post','2.post.php?user=Anikin&password=0925&'+new Date

().getTime(),true);【?t或者&都可以】、

传输中文乱码问题用编码解决encodeURI('张三')
**********************************************************看仔细是encodeURI不是L

xhr.open('post','2.post.php?user='+encodeURI('张三')+'&password=0925?t='+new

Date().getTime(),true);【


2:post方式,不存在缓存。数据提交时跟在请求头里面的。 可以传递任何东西

post方式,数据放在send()里面作为参数传递

xhr.send('user=Anikin&password=0928');

设置请求头,告诉后端的编码格式和文档类型:
xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');//申明

发送的数据类型

无需编码,中文也可以传输,因为post是用来提交数据的。

 
jsonp(json with padding)----解决ajax的跨域限制问题。

其实解决跨域问题总共有三种方式:代理的方式  flash jsonp(最

常用)

实现原理:1.script标签
                  2.用script标签加载资源是没有跨域问题的
                  3.通过内填充,在资源加载之前定义好一个函数,这个

函数接受一个参数,函数里面利用这个参数做一些事情,然后需

要的时候通过script标签加载对应的远程文件资源,当远程的文件

被资源加载进来的时候,就会去执行我们前面定义好的函数,并

且把数据当做这个函数的参数传入进去。
  fn(..)

面临的问题:1 .当需要的时候才加载资源:动态DOM创建这个标

                   2. 如果用于不同的用途:在后端写成callbcak,写成

活的,在前端就不需要一直的


0 0
原创粉丝点击