【逆战班】
Jquery封装Ajax主要适用于两种,一种是非跨域,一种是跨域。
先来说一下非跨域的基本封装:
非跨域的封装分为两种,一种是需要区分请求方法,一种综合请求方法,即get和post请求方法都可以使用。需要区分的有两个方法:$.get()和$.post()方法。:
$.get()方法:
$.get({
url : 地址,
data : 携带的参数 对象形式,
dataType : 期望的数据类型,如果为json,会将后端返回的json串,自动解析,
success : function(){} 请求成功时执行的函数
})
$.post()方法:
$.post({
url : 地址,
data : 携带的参数 对象形式,
dataType : 期望的数据类型,如果为json,会将后端返回的json串,自动解析,
success : function(){} 请求成功时执行的函数
})
综合请求方式:$.ajax()
$.ajax({
url : 地址,
type / method : 请求方式 默认值是get方式,
data : { } 传参参数,必须是对象形式,
dataType : json, 设定为json,会自动解析反应提中的json串,
success : function(){} 请求成功执行的函数,
async : 设定是否异步,默认值是true,异步执行ajax请求,
error : function(){} 请求错误时执行的函数,
timeout : 设定时间,单位 毫秒,( 如果请求时间超过设定的时间,认为是请求失败,必须是异步执行),
cache : 设定是否缓存请求结果,默认值是 true,缓存请求结果,必须是get方式,这个设定才起作用,
context : 指定 执行函数中 this的指向
})
跨域:
1, 代理方式
必须是高版本的jQuery
设定好 服务器代理
定义好请求方式
get方式参数设定在url地址中
post方式参数设定在 data中
2, jsonp方式
支持 jsonp方式,完成跨域请求
先定义一个函数
在PHP中 输出字符串,字符串内容是调用函数,并且定义参数 echo '函数名称(数据参数)'
在js当中,就等于是 执行这个函数
封装的ajax
url : 地址是一个跨域地址
dataType : 必须是 jsonp
jsonp : 设定函数名称,默认是callback