Ajax javascript映射到Spring控制器
我正在尝试将ajax JavascriptAjax javascript映射到Spring控制器,javascript,ajax,spring,Javascript,Ajax,Spring,我正在尝试将ajax Javascript映射到spring控制器。但它在后端变为空。如果我重复这个问题,请原谅 我不能更改Map类型,因为我的整个前端逻辑都在上面。因为set,get和具有Map中的方法是我所需要的 弹簧代码 @RequestMapping (value="myUrl", method=RequestMethod.POST) public @ResponseBody String saveData(@RequestParam(required = false, valu
映射到spring控制器。但它在后端变为空。如果我重复这个问题,请原谅
我不能更改Map
类型,因为我的整个前端逻辑都在上面。因为set
,get
和具有Map
中的方法是我所需要的
弹簧代码
@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);
@RequestMapping(value=“myUrl”,method=RequestMethod.POST)
public@ResponseBody字符串saveData(@RequestParam(required=false,value=“mapData”)映射映射数据,模型映射)
{
log.info(“呼叫成功”);
log.info(“mapData:+mapData”);
请建议需要在此处执行的操作。您实际上可以发送地图,而无需更改值
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将把映射转换为javascript对象,而不改变原始的Map
关于您的后端,我认为您误解了@RequestParam注释
@RequestParam用于从请求中提取查询参数、表单参数甚至文件
我想你要找的是@RequestBody。
这意味着您将寻找类似于:
@RequestMapping(value="/myUrl",method = RequestMethod.POST)
public String saveData( @RequestBody Map<String,Object> body) {
@RequestMapping(value=“/myUrl”,method=RequestMethod.POST)
公共字符串saveData(@RequestBody映射体){
您实际上可以发送地图,而无需更改值
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将把映射转换为javascript对象,而不改变原始的Map
关于您的后端,我认为您误解了@RequestParam注释
@RequestParam用于从请求中提取查询参数、表单参数甚至文件
我想你要找的是@RequestBody。
这意味着您将寻找类似于:
@RequestMapping(value="/myUrl",method = RequestMethod.POST)
public String saveData( @RequestBody Map<String,Object> body) {
@RequestMapping(value=“/myUrl”,method=RequestMethod.POST)
公共字符串saveData(@RequestBody映射体){
这应该行得通
页面
post
$(函数(){
var map=newmap();
地图集('CIQ_2','aa');
地图集('CIQ_3','78965412300');
控制台日志(map);
$(“#doPost”)。单击(函数(){
变量设置={
beforeSend:函数(xhr,选项){
setRequestHeader(“内容类型”,“应用程序/json;字符集=utf-8”);
},
键入:“POST”,
url:“/post”,
数据:JSON.stringify(Object.fromEntries(map))
}
$.ajax(设置).done(函数(结果){
console.log(“完成:+结果”);
});
});
});
控制器
@PostMapping("/post")
@ResponseBody
public String post(@RequestBody Map<String,String> data) {
System.out.println(data);
return "data well received";
}
@PostMapping(“/post”)
@应答器
公共字符串post(@RequestBody映射数据){
系统输出打印项次(数据);
返回“数据接收良好”;
}
将打印
{CIQ_2=aa,CIQ_3=78965412300}
工作代码在这应该可以工作
页面
post
$(函数(){
var map=newmap();
地图集('CIQ_2','aa');
地图集('CIQ_3','78965412300');
控制台日志(map);
$(“#doPost”)。单击(函数(){
变量设置={
beforeSend:函数(xhr,选项){
setRequestHeader(“内容类型”,“应用程序/json;字符集=utf-8”);
},
键入:“POST”,
url:“/post”,
数据:JSON.stringify(Object.fromEntries(map))
}
$.ajax(设置).done(函数(结果){
console.log(“完成:+结果”);
});
});
});
控制器
@PostMapping("/post")
@ResponseBody
public String post(@RequestBody Map<String,String> data) {
System.out.println(data);
return "data well received";
}
@PostMapping(“/post”)
@应答器
公共字符串post(@RequestBody映射数据){
系统输出打印项次(数据);
返回“数据接收良好”;
}
将打印
{CIQ_2=aa,CIQ_3=78965412300}
在上工作的代码我在后端得到了null
,我是否也需要更改以修改我的java文件?更新java后不允许得到方法
,而且我没有此请求的pojo,这是简单的键值对您的“pojo”您的myUrl
变量设置为正确的url时所使用的映射是否正确。您可以添加此consumes={“application/json”}
到您的RequestMapping注释更具体地说是的,它是正确的url。它是公司url。因此我没有在这里透露。不允许使用相同的错误方法
。我也尝试其他方法。basic@RequestBody和java.util.Map应该可以工作。不允许使用方法可能是因为很多事情。其中一个是需要的东西在后端没有得到null
,我也需要修改我的java文件吗?更新java后不允许得到方法
,而且我没有这个请求的pojo,这是简单的键值对“pojo”您的myUrl
变量设置为正确的url时所使用的映射是否正确。您可以添加此consumes={“application/json”}
到您的RequestMapping注释更具体地说是的,它是正确的url。它是公司url。因此我没有在这里透露。不允许使用相同的错误方法
。我也尝试其他方法。basic@RequestBody和java.util.Map应该可以工作。不允许使用方法可能是因为很多事情。其中一个是不符合要求的东西