ajax返回值给上层函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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; }) });
以上是关于ajax返回值给上层函数的主要内容,如果未能解决你的问题,请参考以下文章
ajax传值和返回值问题: 能够从前台传值给后台,但是后台的值怎么传给前台呢? 代码见补充(求详细解答
jQuery $.get(url,data,callback,type) 返回值给全局变量赋值的问题
jQuery Ajax传值给Servlet,在Servlet里接受参数乱码的解决方法