Ajax
mui框架基于htm5plus的XMLHttpRequest,封装了常用的Ajax函数,支持GET、POST请求方式,支持返回json、xml、html、text、script数据类型; 本着极简的设计原则,mui提供了mui.ajax方法,并在mui.ajax方法基础上,进一步简化出最常用的mui.get()、mui.getJSON()、mui.post()三个方法。
-
mui.ajax( url[, settings])
-
urlType: String请求发送的目标地址
-
settingsType: PlainObjectkey/value格式的json对象,用来配置ajax请求参数,支持的完整参数参考如下
mui.ajax([settings])
方法
-
-
mui.ajax([settings])
-
settingsType: PlainObjectkey/value格式的json对象,用来配置ajax请求参数,支持的详细参数如下:
-
asyncType: Boolean发送同步请求
-
crossDomain *5+ onlyType: Boolean强制使用5+跨域
-
dataType: PlainObject||String发送到服务器的业务数据
-
dataTypeType: String预期服务器返回的数据类型;如果不指定,mui将自动根据HTTP包的MIME头信息自动判断;支持设置的dataType可选值:
-
"xml": 返回XML文档
-
"html": 返回纯文本HTML信息;
-
"script": 返回纯文本JavaScript代码
-
"json": 返回JSON数据
-
"text": 返回纯文本字符串
-
-
errorType: Functon(XMLHttpRequest xhr,String type,String errorThrown)请求失败时触发的回调函数,该函数接收三个参数:
- xhr:xhr实例对象
- type:错误描述,可取值:"timeout", "error", "abort", "parsererror"、"null"
- errorThrown:可捕获的异常对象
-
successType: Functon(Anything data,String textStatus,XMLHttpRequest xhr)请求成功时触发的回调函数,该函数接收三个参数:
- data:服务器返回的响应数据,类型可以是json对象、xml对象、字符串等;
- textStatus:状态描述,默认值为'success'
- xhr:xhr实例对象
-
timeoutType: Number请求超时时间(毫秒),默认值为0,表示永不超时;若超过设置的超时时间(非0的情况),依然未收到服务器响应,则触发error回调
-
typeType: String请求方式,目前仅支持'GET'和'POST',默认为'GET'方式
-
headersType: Json指定HTTP请求的Header
-
processDataType: Boolean为了匹配默认的
content-type("application/x-www-form-urlencoded")
,
mui默认会将data
参数中传入的非字符串类型的数据转变为key1=value&key2=value2
格式的查询串;
如果业务需要,希望发送其它格式的数据(比如Document对象),可以设置processData
为false
-
-
代码示例:如下为通过post方式向某服务器发送鉴权登录的代码片段
mui.post()
方法是对mui.ajax()
的一个简化方法,直接使用POST请求方式向服务器发送数据、且不处理timeout和异常(若需处理异常及超时,请使用mui.ajax()
方法),使用方法:
mui.post(url[,data][,success][,dataType])
,如上登录鉴权代码换成mui.post()
后,代码更为简洁,如下:
mui.get()
方法和mui.post()
方法类似,只不过是直接使用GET请求方式向服务器发送数据、且不处理timeout和异常(若需处理异常及超时,请使用mui.ajax()
方法),使用方法:
mui.get(url[,data][,success][,dataType])
,如下为获得某服务器新闻列表的代码片段,服务器以json格式返回数据列表
如上mui.get()
方法和如下mui.ajax()
方法效果是一致的:
mui.getJSON()
方法是在mui.get()
方法基础上的更进一步简化,限定返回json格式的数据,其它参数和mui.get()
方法一致,使用方法:
mui.get(url[,data][,success])
,如上获得新闻列表的代码换成mui.getJSON()
方法后,更为简洁,如下:
扩展阅读
问答社区话题讨论: Ajax
代码块激活字符: