gpt4 book ai didi

javascript - Ajax javascript 映射到 Spring Controller

转载 作者:行者123 更新时间:2023-12-01 00:31:27 25 4
gpt4 key购买 nike

我正在尝试 ajax Javascript Map 到 spring Controller 。但它在后端变得为空。如果我重复问题,请原谅。

  1. 我无法更改 Map 类型,因为我的整个前端逻辑都在它上面。因为 Map 中的 setgethas 方法正是我所需要的。
var ansMap = new Map(); // This way i created object

// added many values in ansMap,

$.ajax({
type: "POST",
url: myUrl,
contentType : 'application/json',
//cache: false,
dataType : 'json',
data : ansMap, // can't JSON.stringy(ansMap) as it gives empty json
success: function(result) {
console.log(result);
},

Spring 代码

@RequestMapping (value="myUrl", method=RequestMethod.POST)
public @ResponseBody String saveData(@RequestParam(required = false, value = "mapData") Map<String,List<String>> mapData, Model map)
{
log.info("Call Success");
log.info("mapData: "+mapData);

请建议此处需要做什么。

最佳答案

您实际上可以发送 map 而不改变值

var ansMap = new Map(); // This way i created object

// added many values in ansMap,

$.ajax({
type: "POST",
url: myUrl,
contentType : 'application/json',
//cache: false,
dataType : 'json',
data : JSON.stringify(Object.fromEntries(ansMap)), // can't JSON.stringy(ansMap) as it gives empty json
success: function(result) {
console.log(result);
},

这会将其转换为 JavaScript 对象。

Object.fromEntries 会将你的Map变成一个javascript对象,而不改变原来的Map

关于你的后端,我认为你误解了 @RequestParam 注释@RequestParam 是从请求中提取查询参数、表单参数甚至文件。

我认为您正在寻找的是@RequestBody。这意味着您会寻找类似的东西:

@RequestMapping(value="/myUrl",method = RequestMethod.POST) 
public String saveData( @RequestBody Map<String,Object> body) {

关于javascript - Ajax javascript 映射到 Spring Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58487693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com