$http.post发的数据,后台取不到

我用$http.post(url, data). 后台用play框架,不知道为什么总是取不到data数据。如果直接用$.post(url, data); 就可以!

$http.post('Gulugulus/setMenu', {
                map: menu,
                test: 'test_lwp'
            }).success(function(){
                window.location.href = "Gulugulus/subMenu";
            });

后台Play的一个action:

public static void setMenu(Map map, String test) {
    System.out.println("test = " + test);
    menuMap = map;
}

打印出来,始终是null. 如果直接用$.post就可以正常打印出: test_lwp

$.post('Gulugulus/setMenu', {
            map: menu,
            test: 'test_lwp'
        });

 
 
  • $http.post 采用postJSON方式发送数据到后台, 解决办法:在php中使用 $postData=file_get_contents('php://input', true); 这样就可以获取到前端发来的数据

  • $http.post 采用postJSON方式发送数据到后台, 解决办法:在php中使用 $postData=file_get_contents('php://input', true); 这样就可以获取到前端发来的数据

  • 最终完整的前端解决方案:

    var url = 'Gulugulus/setMenu',
                data = {
                    menu: JSON.stringify(menu),
                    test: 'a String'
                },
                transFn = function(data) {
                    return $.param(data);
                },
                postCfg = {
                    headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
                    transformRequest: transFn
                };
    
            $http.post(url, data, postCfg)
                .success(function(){
                    window.location.href = "Gulugulus/subMenu";
                });
  • 找到原因了:我的那个Play1.2的action中,期望得到的是params的输入,而我传入的是JSON字符串,所以就NULL了。在Play2中,可以处理JSON请求。Play1.2我就不知道行不行了。 最终的解决方案:(把它转成类似$.post的请求)

    var transform = function(data){
        return $.param(data);
    }
    
    $http.post("/foo/bar", requestData, {
        headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
        transformRequest: transform
    }).success(function(responseData) {
        //do stuff with response
    });
参考:http://www.angularjs.cn/A0jl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值