需求:
Jquery的ajax虽好,但还总有些重复的东西可抽象,如contentType,data:JSON.stringfy(params),error,success中的res的状态码的判断,
type: post,
寻思封装一下,
思路:使用jquery的$.Deferred,获取promise,传递数据
代码如下:
/**
* 封装ajax方法
* @param {String} url
* @param {Object} params
* @returns {Promise}
*/
ajax: function (url, params) {
var deferred = $.Deferred();
$.ajax({
contentType: "application/json;charset=UTF-8",
data: JSON.stringify(params),
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.error("-------");
console.error("状态码:" + XMLHttpRequest.status);
//状态:
// 0-未初始化
// 1-正在载入
// 2-已经载入
// 3-数据进行交互
// 4-完成
console.error("状态:" + XMLHttpRequest.readyState);
console.error("错误信息:" + XMLHttpRequest.statusText);
console.error("返回响应信息:" + XMLHttpRequest.responseText);
console.error("请求状态:" + textStatus);
console.error(errorThrown);
console.error("请求失败");
},
success: function (result) {
if (result.state == 1) {
deferred.resolve(result.data);
}
if (result.state == 0) {
console.error(result.msg);
}
},
type: "POST",
url: url,
});
return deferred.promise();
},