jquery中$.ajax和angularjs中$http 使用restful api post提交数据时的不一致的解决方法

本文讨论post

本质

1 $.ajax 是 把 json 使用$.param处理 。使用 application/x-www-form-urlencoded
2 $http会 使用JOSN.stringify来处理。使用 application/json
所以:它们发送的数据就会不一样
1 代码像这样 “a=1&b=2”
2 代码像这样 “{a:1,b:2}”

解决

数据格式的不统一,则要求我们要分别做处理,或者把它统一起来
1 后端分别处理
2 前端统一数据格式

使用$.ajax的格式,$http给的方案是

$http({
        url: url,
        method: 'POST',
        data: $httpParamSerializerJQLike(myData),
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded'
        }
     });

在用restful api时, jquery也要写成

$.ajax({
  url:url,
  type:'POST',
  data:JSON.stringify({"id":1,"name":"xx"}),
  contentType:'application/json; charset=utf-8',
  dataType:'json'
})

java 接受post的 json要

BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream(),"utf-8"));
        String line = null;
        StringBuilder str = new StringBuilder();
        while ((line = br.readLine()) != null) {
          str.append(line);
        }
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的例子来说明如何在后端Java代码和前端JS页面实现数据传递: 后端Java代码(使用SpringMVC框架): ```java @RestController @RequestMapping("/api") public class UserController { @Autowired private UserService userService; @GetMapping("/users") public List<User> getUsers() { return userService.getAllUsers(); } @PostMapping("/users") public User addUser(@RequestBody User user) { return userService.addUser(user); } } ``` 上述代码,我们使用了SpringMVC框架来创建一个RESTful API,其包含了获取所有用户列表和添加用户两个接口。在添加用户接口,我们使用了`@RequestBody`注解来接收前端发送的用户数据,然后通过调用`userService`来添加用户。 前端JS页面(使用jQuery): ```javascript $(document).ready(function() { // 获取所有用户列表 $.get("/api/users", function(data) { // 处理返回的用户数据 // ... }); // 添加一个用户 var user = { name: "John", age: 25 }; $.ajax({ type: "POST", url: "/api/users", data: JSON.stringify(user), contentType: "application/json", success: function(data) { // 处理返回的新用户数据 // ... } }); }); ``` 上述代码,我们使用jQuery库来发送HTTP请求,其包含了发送GET请求获取所有用户列表和发送POST请求添加一个用户两个操作。在发送POST请求,我们将用户数据转换为JSON格式并在请求头指定`Content-Type`为`application/json`,然后发送给后端进行处理。 总之,以上代码只是一个简单的例子,实际的数据传递过程可能会更加复杂。但是,无论采用哪种方式进行数据传递,关键是要保证前后端数据格式的统一和正确性,以及保证数据的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值