请求
介绍下 Mobilebone 的请求处理逻辑。
方法
在 Mobilebone 中,触发页面的请求与加载有两种方式:
- 基于
<a>元素或者<form>元素; - 调用
Mobilebone.ajax()方法。
其中,Mobilebone.ajax() 方法通过传递 Object 类型参数触发请求的执行,示意:
Mobilebone.ajax({
url: "",
type: "",
dataType: "",
data: {},
timeout: 10000,
success: function() {},
error: function() {},
complete: function() {}
})
参数的命名均源自 jQuery 的 $.ajax() 方法。
如果是通过点击 <a> 元素触发请求的执行,则所有的参数需要使用 HTML 属性进行传递。
其中的 data 参数本身就是个 Object 纯对象,因此,这个参数的传递稍微特别了一点,通常使用下面两种方法:
支持通过
href原地址进行简单的请求参数传递,例如:<a href="detail.html?id=1&type=0">加载</a>-
通过
data-formdata进行请求参数设置,例如:<a href="detail.html" data-formdata="id=1&type=0">加载</a>
而其他的参数,则可以通过下面两种方法进行设置:
- 分别设置,包括:
data-url、data-datatype、data-success等,详见对应的 API 文档:data-ajaxKeys.html - 批量设置,使用
data-params属性进行参数设置,例如:<a href="ajax.html" data-params="datatype=json&success=succ_callback>点击我</a>
参数
各个参数函数和对应的 HTML 属性如下:
- url
- 请求地址。对应
<a>元素的href属性或者<form>元素的action属性,如果这些属性值都缺失,则尝试使用data-url的属性值作为请求地址,如果还是缺失,则尝试从data-params属性中匹配url字段值。 - type
- 请求的类型。默认是
'get'。可以使用<form>元素的method属性进行设置。如果缺失,则尝试使用data-type属性。如果还是缺失,则尝试从data-params属性中匹配type字段值。 - dataType
- 请求数据类型。默认类型是文本类型,支持
'json'数据类型,Mobilebone 会对返回的数据进行 JSON 解析并处理。可以通过data-datatype或匹配data-params属性值获取。 - data
- 请求参数。默认为空。可以设置在
url参数中,也可以使用data-formdata或匹配data-params属性值获取。 - timeout
- 超时时间。可以使用
data-timeout或匹配data-params属性值获取。 - success
- 请求成功回调方法。可以使用
data-success或匹配data-params属性值获取。 - error
- 请求失败回调方法。可以使用
data-error或匹配data-params属性值获取。 - complete
- 请求完成回调方法。可以使用
data-complete或匹配data-params属性值获取。
其中几个回调方法需要专门说下。
首先,各个回调方法使用和生命周期事件函数同样的装载器,默认是 window 对象,当通过 Mobilebone.rootTransition 改变函数的装载器的时候,这里的请求方法的装载器也会同步变化。
如果不希望这种变化发生,则可以使用 data-root 指定几个函数的调用上级,例如:
<a href="ajax.html" data-params="datatype=json&success=succ_callback data-root="myVue">点击我</a>
则请求成功后就会执行 myVue.succ_callback() 这个方法。
然后,讲下各个回调方法的语法:
success(response, status); error(xhr, status); complete(xhr, status);
其中 response 指返回的数据,xhr 指 XMLHttpRequest 请求对象,status 是请求返回的原始状态码。
JSON处理
如果请求的数据类型是 'json',则请求成功后,Mobilebone 会调用名为 Mobilebone.jsonHandle() 的方法,如果有安装有 Mobilebone 官方的模板渲染插件,则会自动执行 JSON 数据的渲染,否则,需要开发者自己设置 Mobilebone.jsonHandle 的处理逻辑:
Mobilebone.jsonHandle = function (json) {
// 根据 json 数据渲染页面
// 可以使用 Mobilebone.createPage() 方法创建页面
};
上面提到的 Mobilebone.createPage() 方法是 Mobilebone 底层的创建页面方法,详见对应的 API 文档:Mobilebone.createPage.html。
发现错误?想参与编辑?在 GitHub 上编辑此页!