首先,jQuery那是真的香!
创建ajax对象
定义配置
发送请求
接收响应体
还得考虑兼容(想问IE什么时候删库?)
//做个兼容
if(){
var xhr = new XMLHttpRequest();
}else{
var xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
//get请求
xhr.open('get','http://.......?请求参数');
xhr.send();
xhr.onload = function(响应体参数){}
//post请求
//必须设定响应头以确保post能够正确传参
xhr.setRequestHeader('content-type' , 'application/x-www-form-urlencoded');
xhr.open('post','地址');
xhr.send(请求参数);
xhr.onload = function(响应体参数){}
·
·
·
·
请求参数也可以写在地址?后面,dataType将会自动转换为你设定的参数表示的数据类型,例如json串
$.get({
url:'请求地址',
data:{请求参数:值........},
dataType:"你期望得到响应体的是什么数据类型",
success:function(响应体参数){}
})
·
不用设定响应头,jQuery已经搞定一切,并且以jQuery封装的ajax请求不用再去写兼容
$.post({
url:'请求地址',
data:{请求参数:值........},
dataType:"你期望得到响应体的是什么数据类型",
success:function(响应体参数){}
})
·
常规请求(非跨域请求)
参数N多个,地址必须有,其他看需求
$.ajax({
url:请求地址,
type:请求方式,默认为get,
data:{请求参数},
dataType:响应体数据类型,
success:function(响应体参数){}
})
以上是比较常用的一些参数,它们都以对象的方式存储
还有一些不太常用的参数,例如:
async : 设定是否异步,默认为true,异步执行。(正常来讲没人会用同步请求吧)
error :function(){} 请求发生错误时执行的函数
timeout : 设定最大请求时间(毫秒),如果超出时间,则认定请求失败
cache:设定是否缓存请求结果,默认true
context:指定执行函数中this的指向
·
跨域请求
3.4版本以上的jQuery支持代理方式的跨域请求,只要配置文件配置好就行
·
jsonp方式跨域
需要设定dataType的值为jsonp,并且添加一个jsonp属性,值是一个定义好的函数名,如果没有定义,默认为callback,在后台返回这个函数,参数就是需要返回的数据
$.ajax({
url:.....,
type:"post",
dataType:"jsonp",
jsonp:'myFunction',
success:function(接收响应体参数){}
})
function myFunction(){}
$para = $_POST;
echo "myFunciont(" . json_encode($para) . ")";