微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

angularjs调用springmvc action时,访问到action但是数据不能正确返回到angular controller中





问题:angularjs调用url: /admin/query, action方法已进去了,数据也查询到了,但是数据angularjs controller.js中没法获得到,阅读器中看到/admin/admin/query地址的调用(不知道为啥多加了个/admin),都报404错了。
解决:springMVC action方法必须要增加注解@ResponseBody

webapp/jsp/main.jsp:
@H_502_48@<%@ page contentType=text/html;charset=UTF⑻ language=java %>
@H_502_48@<html>
@H_502_48@head>
@H_502_48@    <title></title>
@H_502_48@    link href=/css/bootstrap.min.css rel=stylesheet>
@H_502_48@    script src=/js/jquery.min.js></script>
@H_502_48@    /js/angular.min.js/js/angular-resource.min.js/js/angular-route.min.js/app.js/controller/controllers.js/service/services.jsscript>
@H_502_48@</head>
@H_502_48@body ng-app=myApp> @H_502_48@    hello testBR> @H_502_48@    div ng-controller=PhoneCtrl2> @H_502_48@        ng-repeat=p in phones> @H_502_48@            {{p.name}} {{p.age}} {{p.phone}} @H_502_48@        </div> @H_502_48@        ul> @H_502_48@            li ng-class-odd='odd' ng-class-even='even' ng-repeat=> @H_502_48@                {{p.name}} {{p.age}} {{p.phone}} @H_502_48@            li> @H_502_48@        ul> @H_502_48@    div> @H_502_48@    widthCtrlstyle=width5px;height10px;background-colorredinput type=text name=width ng-model=widthModeldiv> @H_502_48@ @H_502_48@    label usernameCheckCtrl> @H_502_48@        判断用户名是不是存在,输入abc则返回存在BR> @H_502_48@        用户名username ng-blur=checkUsername111()span colorred ng-show=isUsernameExisted>用户名已存在span> @H_502_48@    label> @H_502_48@ @H_502_48@    ng-init=a=2ul ng-switch on=a> @H_502_48@            ng-switch-when=1>1li> @H_502_48@            2>2ng-switch-default>otherdiv> @H_502_48@body> @H_502_48@html>


action:
@H_502_48@@Controller
@H_502_48@@RequestMapping(/admin) @H_502_48@public class LoginAction { @H_502_48@    private static final Logger log = LoggerFactory.getLogger(LoginAction.class); @H_502_48@    @Resource(name = mAdminBO) @H_502_48@    private MAdminBO mAdminBO; @H_502_48@ @H_502_48@    @RequestMapping(/query) @H_502_48@    @ResponseBody @H_502_48@    public Object query(@RequestParam(admin) String admin, HttpSession session) { @H_502_48@        log.info(query admin={}admin); @H_502_48@        MAdmin param = new MAdmin(); @H_502_48@        param.setAdmin(ret = null; @H_502_48@        ret.setAdmin(abc); @H_502_48@        ret.setStatus(1); @H_502_48@        ret.setModdate(new Timestamp(new Date().getTime())); @H_502_48@        // try { @H_502_48@        // ret = mAdminBO.query(param); @H_502_48@        // } catch (Exception e) { @H_502_48@        // log.error(, e); @H_502_48@        // } @H_502_48@        query result:{},62)">ret); @H_502_48@        return ret;     } 

app.js:
@H_502_48@// 模块可以按任意的顺序定义,模块要先定义,后使用
@H_502_48@angular.module('myApp', ['ctrl','ngResource']); @H_502_48@angular.module('svc']); angular.module('svc', []); 
 
controllers.js:
angular.module('ctrl');
var app=angular.module('myApp'); 
@H_502[email protected]('usernameCheckCtrl',function($scope,MAdminSvc){
@H_502_48@    //失去焦点,校验username @H_502_48@    /*$scope.checkUsername=function(){ @H_502_48@        if($scope.username==zgx){ @H_502_48@            $scope.isUsernameExisted=true; @H_502_48@        }else{ @H_502_48@            $scope.isUsernameExisted=false; @H_502_48@        } @H_502_48@    } @H_502_48@    */ @H_502_48@    @H_502_48@    //实时校验 @H_502_48@    $scope.$watch('username', @H_502_48@        function(to,from){ @H_502_48@            console.log(--username=+$scope.username); @H_502_48@            var promise=MAdminSvc.query($scope.username);// 同步调用,取得许诺接口 @H_502_48@            promise.then(function(data){// 调用许诺API获得数据 .resolve   @H_502_48@                console.log(admin=+data.admin); @H_502_48@                if($scope.username==data.admin){ @H_502_48@                    $scope.isUsernameExisted=true; @H_502_48@                }else{ @H_502_48@                    $scope.isUsernameExisted=false; @H_502_48@                } @H_502_48@            },function(data){//处理毛病 .reject @H_502_48@                console.log(err: +data); @H_502_48@                $scope.isUsernameExisted=false; @H_502_48@            }) @H_502_48@             @H_502_48@        } @H_502_48@
@H_502_48@    ) @H_502_48@});

services.js:
@H_502_48@angular.module('svc');
@H_502_48@ var app=angular.module('myApp'); 
//使用factory定义服务:通过admin查询M_ADMIN数据
app.factory('MAdminSvc',255)">'$http',255)">'$q',function ($http,$q) {
    return {
        query:function(admin){
            var deferred=$q.defer();
            if(admin==null||admin==){
                return deferred.promise;
            }
            
            $http({
                method:'POST',
                //headers: {'Content-type': 'application/json;charset=UTF⑻'},
                url:'/admin/query',
                responseType:'json',
                params: {'admin':admin}
            }).success(function(data,status,headers,config){
                console.log(data+===+data.admin);
                deferred.resolve(data);//成功,返回数据
            }).error(fig){
                console.log(status=+status);
                deferred.reject(data);//失败,返回毛病信息
            });
            return deferred.promise;// 返回许诺,这里其实不是终究数据,而是访问终究数据的API  
        }
    };
}]) 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐