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";

//post
var REQUEST_TYPE_POST = "POST";
//GET
var 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) : "";
}

//移出指定的key
function 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)这个方法来解析数据了

四、测试

时间: 2024-08-25 04:52:01

JS之——回调函数的简单应用(插曲)的相关文章

JS中回调函数的简单用法

a能拿b,b能拿到c,c能拿到d,实现a拿到d的东西. function a() { b(function (data) { console.log(data); }); } function b(cb) { c(function (data) { cb(data); }); } function c(cb) { d(function (data) { cb(data); }); } function d(cb) { setTimeout(() => { let data = "彩虹&qu

关于js的回调函数的一点看法

算了一下又有好几个月没写博客了,最近在忙公司android的项目,所以也就很少抽时间来写些东西了.刚闲下来,我就翻了翻之前看的东西.做了android之后更加感觉到手机端开发的重要性,现在做native App  和Web App是主流,也就是说现在各种基于浏览器的web app框架也会越来越火爆了,做js的也越来越有前途.我也决定从后端开发渐渐向前端开发和手机端开发靠拢,废话不说了,我们来切入正题“js的回调函数”相关的东西. 说起回调函数,好多人虽然知道意思,但是还是一知半解.至于怎么用,还

hbuilder开发node.js,以及node.js的回调函数

1.hbuilder安装node.js开发插件 工具---插件安装 然后重启Hbuilder让nodeeclipse生效就行了 运行:运行方式选择node应用就可以运行node.js了. 显示出了控制台,说明nodeJS可以在Hbuilder中使用了.(PS,电脑要先安装过node.js,Hbuilder只是辅助) 2.node.js的回调函数 原文地址:https://www.cnblogs.com/xingyue1988/p/8779633.html

js回调函数的简单理解

什么是回调? A callback is a function that is passed as an argument to another function and is executed after its parent function has completed. 字面上的理解,回调函数就是传递一个参数化的函数,就是将这个函数作为一个参数传到另一个主函数里面,当那一个主函数执行完之后,再执行传进去的作为参数的函数.走这个过程的参数化的函数 就叫做回调函数.换个说法也就是被作为参数传递

Node.js 使用回调函数实现串行流程控制

下面是一个使用Node.js回调函数实现串行流程控制的示例: setTimeout(function() { console.log('I excute first.'); setTimeout(function() { console.log('I excute next.'); setTimeout(function() { console.log('I excute last.'); }, 100); }, 500); }, 1000);

没办法,还是要补一下js,回调函数(转载)

<html> <head> <title>回调函数(callback)</title> <script language="javascript" type="text/javascript"> function a(callback) { alert("我是parent函数a!"); alert("调用回调函数"); callback(); } function b

js的回调函数 一些例子

这边用bootstrap 3.0的  上传控件做例子 下面是上传控件的一段完整的 js 操作 代码. <!-- 上传缩略图控件配置 --><script> // 定义这四个全局变量是 为了保存4张图片的uuid 在回调函数中每次保存 都覆盖前一张的名字 实现 用户可以重复添加取最终的结果保存入库 window.Picture1=""; //轮播图1的全局变量 window.Picture2=""; //轮播图2的全局变量 window.Pic

Js 自定义回调函数

参考 http://mlxnle.iteye.com/blog/1670679 <!doctype html> <html lang="es"> <head> <meta charset="UTF-8"> <title>HTML5</title> <link rel="stylesheet" href="#" /><!-- css样式 -

node.js 中回调函数callback(转载),说的很清楚,看一遍就理解了

最近在看 express,满眼看去,到处是以函数作为参数的回调函数的使用.如果这个概念理解不了,nodejs.express 的代码就会看得一塌糊涂.比如: 复制代码 代码如下: app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); app是对象,use是方法,方法的参数是一个带参的匿名函数,函数体直接在后面给出了.这段代码怎么理解呢?我们先来了解