AngularJS免不了和web服务端交互,贴一段代码
$rootScope.ajaxRequestPost = function (requestUrl, data, successCallback) {
var transFn = function (data) {
return $.param(data);
};
var postCfg = {
headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
transformRequest: transFn
};
$http.post(requestUrl, data, postCfg).success(function (resultJson) {
if (resultJson.success) {
//回调业务
successCallback(resultJson);
}
}).error(function (e) {
console.log('系统异常');
});
};
注意,在使用$http 提交请求时,配置了postCfg,其内部用了jquery.param方法,贴一段w3school上对该方法的说明:
param() 方法创建数组或对象的序列化表示。该序列化值可在进行 AJAX 请求时在 URL 查询字符串中使用
注意到,如果提交的参数就是简单的表单,一切OK。例如常用的SpringMVC举例
比如
class A{
String xx;
}
public CommonResult update(HttpServletRequest request,HttpServletResponse response, @ModelAttribute A a) {
}
但是一旦A变成了复杂对象,其Jquery特有的序列化方式,将后导致后端处理时的异常:
class A{
B b;
}
class B{
String xx;
}
这时候该怎么办呢,解决方案如下:
1 修改post方法,采用angularJS默认方法: $http.post(requestUrl, data)
2 修改后端方法,采用@RequestBody
public CommonResult update(HttpServletRequest request,HttpServletResponse response, @RequestBody A a) {
}
实际上的不同就是,前者提交时,任是以key-value的形式提交;而后者提交时,直接将A的json串放在了body中了
至于ModelAttribute 和 RequestBody 注解有什么不同,百度一下
- 大小: 72.3 KB
分享到:
相关推荐
AngularJs Post提交改造,可到博客进行查看http://blog.csdn.net/jianxuanbing/article/details/45045645
1、在页面中加入AngularJS并为页面绑定ng-app 和 ng-controller <body ng-app="MyApp" ng-controller="MyCtrl" > ... [removed][removed] [removed][removed] 2、添加必要的控件并绑定相应的事件 get:<...
主要介绍了AngularJs的$http发送POST请求,php无法接收Post的数据的问题及解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
主要介绍了Angularjs中$http以post请求通过消息体传递参数的方法,结合实例形式分析了$http使用post请求传递参数的相关设置与使用技巧,需要的朋友可以参考下
在使用jquery的时候进行post请求的时候很简单. $.ajax({ type: 'POST', url:'process.php', data: formData, dataType: 'json', success: function(result){ //do something } }); 对这个传输的数据我们...
本篇文章主要介绍了AngularJS $http模块POST请求实现,这里整理了详细的代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
AngularJS发起$http.post请求 代码如下: $http({ method:'post', url:'post.php', data:{name:"aaa",id:1,age:20} }).success(function(req){ console.log(req); }) 这时候你会发现收不到返回的数据,结果为...
下面阐述一下AngularJS中使用$http实现跨域请求数据。 AngularJS XMLHttpRequest:$http用于读取远程服务器的数据 $http.post(url, data, [config]).success(function(){ ... }); $http.get(url, [config]).success...
本文主要介绍如何使用Angularjs $http服务以POST方法向服务器传递json对象数据。 具体如下: 一、$http POST方法默认提交数据的类型为application/json var data = {'wid':'0', 'praise' : '25'}; $http.post(url, ...
AngularJS封装$http.post()实例详解 用了不是很长的时间跟了一个移动APP项目,用的是ionic + AngularJS + cordova框架,其间遇到过挺多问题,其中一个就是对Ajax的封装问题。 其实针对封装问题一直以来就没停止过...
├最新AngularJS开发宝典—第033讲 修复删除菜单时一级菜单选项不显示的问题.mp4 ├最新AngularJS开发宝典—第034讲 filter变量调节器分析与货币变量调节器处理.mp4 ├最新AngularJS开发宝典—第035讲 lowercase与...
在angularjs发送post请求的时候,确实很困惑,在传递json数据的时候,总会遇到在服务端无法接受到参数的情况,这里有必要与$.post进行比较学习一下。 一个例子 这里模拟登录的一个场景,post用户名与密码,服务端...
Angularjs+Requirejs 单页面应用实例代码+注释 封装好的Get和Post请求Service 可以直接运行的实例
后端接收不到AngularJs中$http.post发送的数据,总是显示为null 示例代码: $http.post(/admin/KeyValue/GetListByPage, { pageindex: 1, pagesize: 8 }) .success(function(){ alert(Mr靖); }); ...
如果这些GET或POST请求不需要传递Cookie数据的话,就没什么问题了,但如果需要,那么会发现 虽然已经处理了跨域请求的问题,但后台始终无法获取到Cookie。 跨域传输Cookie是需要后台和前台同时做相关处理才能解决的...
在AngularJs中有三种方式可以设置请求头信息: 1、在http服务的在服务端发送请求时,也就是调用 http服务的在服务端发送请求时,也就是调用 http()方法时,在config对象中设置请求头信息:事例如下: $http.post('...