JS之——回呼函數的簡單應用(插曲),js回呼函數

來源:互聯網
上載者:User

JS之——回呼函數的簡單應用(插曲),js回呼函數

轉載請註明出處:http://blog.csdn.net/l1028386804/article/details/46274893

JS無疑是前端頁面與服務端互動資料的強大語言,那麼如何利用JS的回呼函數來封裝JS的網路請求呢,本文就來簡單說明這一問題

一、建立一個index.html檔案

頁面內容隨便定義,重點是要引入如下自訂的兩個js檔案,一個是constants.js一個是validate.js


二、建立constants.js檔案

/** * Created by liuyazhuang on 2015/5/29. * 此檔案封裝了一些訪問網路請求的url, * 封裝了一些回呼函數的用法和一些常量 *///lyz的伺服器var base_url_lyz_server = "http://192.168.254.109:10002/tea";//lyz圖片var base_url_lyz_img_server = "http://192.168.254.109:10002";//postvar REQUEST_TYPE_POST = "POST";//GETvar REQUEST_TYPE_GET = "GET";//拼接字串//uri除了基本路徑以外的具體介面路徑//isValidate標誌是否需要登入,true需要登入,false不需要登入function getUrl(uri, isValidate){    var url = base_url_lyz_server+ uri;    if(isValidate){        var token = getValueFromLocalStorage("token");        var username = getValueFromLocalStorage("phone");        url = url+"?access_token="+token+"&mobile_user_name="+username;    }    return url;}//圖片的路徑function getImgUrl(uri){    return base_url_native_img_server + uri;}//擷取localStorage中的某個值function getValueFromLocalStorage(key){    return localStorage.getItem(key) ? localStorage.getItem(key) : "";}//移出指定的keyfunction removeValuesFromLocalStorage(keys){    for(var i = 0; i < keys.length; i++){        localStorage.removeItem(keys[i]);    }}/** * 封裝的ajax請求資料 * url:請求的路徑 * params:參數 * isValidate:是否需求登入驗證 * type:訪問類型:"POST","GET", * method:回調的方法名稱 */function requestDataByAjax(url, isValidate, params, type, method){    $.ajax({        type: type,        url: getUrl(url, isValidate),        cache: false,        async: false,        data:{            "parameter":params        },        success: function (result) {           //回呼函數解析資料            method(result);        },        error: function (XMLHttpRequest, textStatus, errorThrown) {            alert("錯誤:" + textStatus);        }    });}
在這個js檔案中

劃線部分是網路請求返回成功資料後要調用的回呼函數名稱,所有與網路請求相關的業務都可以調用這個方法,服務端返回的資料解析只需交給相應的回呼函數即可,這既體現了代碼的封裝性,又大大提高了代碼的維護性。

三、建立validate.js

//請求地址requestDataByAjax("/website/address/default_address",true, JSON.stringify({"mobile_id": userId}), REQUEST_TYPE_POST, validate_parseAddressResult);//回調方法解析地址資料function validate_parseAddressResult(result){    //資料返回正常    console.log(result);    if(result.code == 1001){        var message = result.message;        $("#appointment_name").text(message.name);        $("#appointment_phone").text(message.phone);        $("#appointment_address").text(message.address);        localStorage.setItem("sendName",message.name);        localStorage.setItem("sendPhone",message.phone);        localStorage.setItem("sendAddress",message.address);    }}
這個js檔案中

劃線部分的名稱是一樣的,調用constants.js的requestDataByAjax方法將方法function validate_parseAddressResult(result)的名稱名稱作為參數,當網路請求成功返回資料後,就會自動調用function validate_parseAddressResult(result)這個方法來解析資料了

四、測試


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.