如何能将json字符串和一些其他参数通过一个ajax传到后台?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何能将json字符串和一些其他参数通过一个ajax传到后台?相关的知识,希望对你有一定的参考价值。
参考技术A 例子:url写自己的端口或者处理程序等,data里按照格式写想要传的参数,encodeURIComponent是加密,一般都会加密后再传,不然有泄露个人信息的风险, dataType: 'json',确定格式为json格式,eval 将后台回传的string字符转转换成json对象,在success里取出放到页面上。望采纳哦!$.ajax(
async: false,
type: 'Post',
url: '../Common/GetSYQMessage.ashx',
data:
'year': encodeURIComponent($("#year").val()),
'DKBH': encodeURIComponent($("#DKBH").val())
,
dataType: 'json',
success: function (response)
var d = eval(response);
var str = "";
console.log(d);
if (d.result == 's' && d.Number != "") //获取的数据
$("#hidNumber").val(d.Number);
var BGCS = d.BGCS == "0" ? "无" : d.BGCS+"次";
var dt = eval(d.data);
console.log(dt);
Addhtml(dt,BGCS);
else
if (d.data != "")
MsgWarn(d.data, '2', '系统信息');
); 参考技术B 1,知道后端接口地址
2,跟后端确认相应的字段名
3,ajax通过json格式发送就ok了。
控制器中组合参数的传递
组合参数就是类对象参数数组和其他一些变量可能需要在前端通过拼接一个json字符串一次性传入过来,格式如下:
控制器方法的定义如下:
@PostMapping("/api/dic/saveDicFieldList") public String saveDicFieldList(@RequestBody List<Object> fieldlist)
注意:对象参数必须要加 @RequestBody 声明,否则无法传递;
然后在方法内部解析,比如获取 {"autoid":245,"moduleno":202},通过以下代码获取:
//取出第0个元素(包含 autoid 和 moduleno) Object obj = fieldlist.get(0); String jsonstr= JSON.toJSONString(obj); JSONObject jobj = JSONObject.parseObject(jsonstr); String autoid = jobj.getString("autoid"); String moduleno = jobj.getString("moduleno");
遍历后面的对象数组,通过以下方法:
//从第一个元素开始,循环保存每个字典属性 for(int i=1;i<fieldlist.size();i++){ Object obj_dtf = fieldlist.get(i); String jsonstr_dtf= JSON.toJSONString(obj_dtf); JSONObject jobj_dtf = JSONObject.parseObject(jsonstr_dtf); DicTypeField dtf = JSON.toJavaObject(jobj_dtf,DicTypeField.class); res = dtf.save(); }
把json对象转为类对象,要用JSON.toJavaObject来转换,不能直接用 (T)obj 的方式强制转化,否则会提示转换失败。(可能是我没找到方法)。
以上是关于如何能将json字符串和一些其他参数通过一个ajax传到后台?的主要内容,如果未能解决你的问题,请参考以下文章
为啥用这种方式能将字符串解析成json对象(new Function("","return "+json))();