ajax返回值给上层函数

var UserModule = angular.module("UserModule", []);

//用户收货地址服务
UserModule.factory("UserAddress", function ($http, $rootScope) {
    var AddressList = undefined;
    return {
        GetAddressList: function () {
            if (!AddressList) {
                $http.post("/api/addressController/dataGridAddress", { user_id: $rootScope.user.id }).success(function (data) {
                    if (data.success) {
                        AddressList = data.obj.rows;
                    }
                })
            }
            return AddressList;
        }
    }
})

UserModule.controller(‘AddressListCtrl‘, function ($scope, $http, UserAddress) {
     $scope.AddressList=UserAddress.GetAddressList();
});

上面代码有问题,$http.post是异步执行的,return AddressList;在AddressList = data.obj.rows;之前执行$scope.AddressList拿到的是undefined;

正确代码:

UserModule.factory("UserAddress", function ($http, $rootScope) {
    var AddressList = undefined;
    return {
        GetAddressList: function (callback) {
            if (!AddressList) {
                $http.post("/api/addressController/dataGridAddress", { user_id: $rootScope.user.id }).success(function (data) {
                    if (data.success) {
                        AddressList = data.obj.rows;
                        callback(AddressList);
                    }
                })
            } else {
                callback(AddressList);
            }

        }
    }
})

UserModule.controller(‘AddressListCtrl‘, function ($scope, $http, UserAddress) {
    UserAddress.GetAddressList(function (data) {
        $scope.AddressList = data;
    })
});
时间: 2024-07-28 16:28:28

ajax返回值给上层函数的相关文章

ajax返回值给上层函数的方法。

function load_val(callback){//定义一个回调函数 $.getJSON('test.php' , function(dat){ callback(data);//将返回结果当作参数返回 }); } load_val(function(data){ alert(data);//这里可以得到值 }); //否则的话你需要这样用同步ajax来实现了 function load_val2(){ var result; $.ajax({ dataType:'json', url

jquery中ajax如何返回值到上层函数的方法以及对于js处理json对象方法的记录

①在我们做前端js处理的时候我们经常会将一些公用的js方法封装起来,方便别的地方调用,但是我们要做的是需要将请求返回的值传递给调用者,这里我记录了在js中采用ajax方法获取后台数据并返回给调用者的方法,我们平时使用ajax的方法基本为如: <span style="font-family:FangSong_GB2312;font-size:18px;">function AutoGetOpenid(){ var personJson; $.ajax({ url : &qu

Ajax返回值问题思考

Ajax请求,请求之后,我们需要得到返回值,或一个,或多个,然后根据返回值进行下一步的逻辑判断,那么返回值问题上,如果我们只是单一的请求后,返回一个值,那么我们可以直接接收,然后判断处理,比如: success: function (data) { if(data == 什么什么) { // 就怎么怎么 } else { // 就怎么怎么 } } 如果Ajax请求需要得到多个返回值呢,既然要返回多个值,那么就涉及到了前台接收解析多个值的问题,好像目前我们碰见过的,json是最好的处理方式之一了,

【03】指针、返回值、成员函数的const

1 // 2 // 2015-03-05 03/55 3 // 指针.返回值.成员函数 之 const 4 // 5 6 #include <iostream> 7 #include <string> 8 9 using namespace std; 10 11 // ------------------------------ 12 // 1. 指针的const 13 // ------------------------------ 14 const char *p1 = &q

Shell函数返回值、删除函数、在终端调用函数

Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: function_name () { list of commands [ return value ] } 如果你愿意,也可以在函数名前加上关键字 function: function function_name () { list of commands [ return value ] } 函数返回值,可以显式增加return语句:如果不加,会将最后一条命令运行结果作为返回值. Shell 函数返

Shell函数:Shell函数返回值、删除函数、在终端调用函数

函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高.像其他编程语言一样,Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: function_name () { list of commands [ return value ] } 如果你愿意,也可以在函数名前加上关键字 function: function function_name () { list of commands [ return value ] } 函数

js获取ajax返回值

z = $.ajax({url:"__URL__/add/",type:'POST',dataType:"json",async:false,cache:false,data:"step=ajax&ajax_type=checkEmail&email="+email,}).responseText;js获取ajax返回值,码迷,mamicode.com

Python的函数式编程-传入函数、排序算法、函数作为返回值、匿名函数、偏函数、装饰器

函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. 传入函数 函数的本身也可以作为参数. Python内建的mapreduce的函数.(来源于谷歌的,后来被道格这家伙开源了,成为当今处理大数据最火热的hadoop中的计算模型---MapReduce) 我们先看map.map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序

Ajax返回值之XML、json类型

Ajax返回值之XML.json类型 2015-01-29 ? 注意:Ajax默认是不能跨域的,在最新的2.0里是可以跨域,但是需要对方应答. ? Ajax返回值之XML类型 <HTML代码> <html> ????<head> ????????<title>Ajax返回return</title> ????<script> function?createXHR(){ ????var?xhr?=?null; ????if(window