$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发的数据,后台取不到

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

  • 评论:$http.post发的数据,后台取不到

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

  • 评论:$http.post发的数据,后台取不到

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

    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"; });
  • 评论:$http.post发的数据,后台取不到

    找到原因了:我的那个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

你可能感兴趣的:(AngularJS)