基于 jQuery Ajax 定制自己喜愛的 API

封面

編寫常規的 AJAX 代碼并不容易,因為不同的瀏覽器對 AJAX 的實現并不相同。不過 jQuery 已經幫忙處理掉了這些兼容,但代碼寫多了還是覺得不爽,因為它不能給我以下的體驗:

  1. 更簡單的鏈式 API;
  2. 頁面中的所有請求要附加一些公共參數;
  3. 不能統一處理服務返回的自定義錯誤;

新的 API

不愛動手的程序員不是好攻城獅。?? 因此,我基于 jQuery,重新封裝了一層。

這是一個例子

//附加公共參數
$http.global("token","abcd321"); 
$http.use("/api",  (res) =>  {
    if (res.success) {
        return true;
    }
    var err = res.error;
    if (err.code === 1001) {
        location.href = "/login.html";
    } else {
        alert(err.message);
    }
    return false;
});

$http.get("/api/user").type("json")
.param("id", 110) .send( (res) =>  { 
       // 過濾器處理完才會執行到這一步
       var datum = res.datum;
       alert("Name: " + datum.name);
       console.log(res.datum);
    }, (err) => {
       alert("查詢失敗了額");
       console.error(err);
     });

這是詳細的API說明

設置公共參數;

  • $http.global(key, value);

設置過濾器;

  • $http.use(urlPrefix, option [optinal], callback);

設置請求類型;

  • $http.get(url);
  • $http.getJson(url);
  • $http.post(url);
  • $http.put(url);
  • $http.delete(url);

增加請求參數;

  • $http.param(key, value);
  • $http.params(paramJson);

設置請求頭;

  • $http.header(key, value);
  • $http.headers(paramJson);

其它擴展選項;

  • $http.cache(boolean);
  • $http.type("json/xml/html");
  • $http.async(boolean);
  • $http.timeout(number);

發送請求并處理回調;

  • $http.send(options [optional], successCallback, errorCallback);

Gist 地址

https://gist.github.com/lenbo-ma/0213bfea8e3f08ff8d66


搜索微信號threetimes1992,關注我。

內容大多會是后端技術、前端工程、DevOps,偶爾會有一些大數據相關,會推薦一些好玩的東西。希望你會喜歡~
一切,源于喜歡。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容