2021/02/20
1、ajax向后台传递参数为null
今天在使用ajax传参时碰到了后台接收参数为null的问题,ajax格式如下
$.ajax({ type: "POST", url: "/displayitem", data: { "number":number }, traditional:false, dataType: "json", success:function (data) {//成功后返回的数据 console.log(data); }, error:function (data) {//失败后返回的数据 console.log(data); } });
后台接收函数如下
@RequestMapping("/displayitem") @ResponseBody public String DisplayItem(String data){ System.out.println(data); if (Integer.parseInt(data) == 1){ return "是1是1"; }else { return "不是1不是1"; } }
然后就发生了data一直为空的问题。仔细检查后发现,ajax传参用的参数名是number,而我后台接收的参数名称是data,名字不相同就无法自动匹配了,所以解决方案是要么写成 public String DisplayItem(@RequestParam("number") String data) ,要么就写成 public String DisplayItem(String number) 。
这个问题开始很基础的,只要再多细心一点就可以避免了。
-----------------------------------------------------------------------------------------------------------
2、ajax接收后台传回的json数据打印为undefined
在后台,我使用的是阿里的fastjson进行json数据打包,打包完成后的数据的确是json格式,传回前端的同样是json格式,但在 $.each(data,function (index,element) 中使用,却无论如何也无法输出正常数据,经过大量查询网上资料、多次试错后,我发现问题很有可能出在json对象和json字符串之间的转换,我修改了后端的json打包方式,原本的打包方式是
String jsonStr = JSON.toJSONString(itemInformation);
jsonArray.add(jsonStr);
这样是将一个json字符串放入了json数组中,修改后的打包方式为
JSONObject jsonObject = (JSONObject)JSONObject.toJSON(itemInformation);
jsonArray.add(jsonObject);
这样直接将一个json对象放入json数组中,果然,传递后的data可以正常地显示了。
==========================================================================================================