ajax使用时碰到的一些坑

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);
            }
        });
View Code

 

后台接收函数如下

@RequestMapping("/displayitem")
@ResponseBody
public String DisplayItem(String data){
     System.out.println(data);
     if (Integer.parseInt(data) == 1){
         return "是1是1";
     }else {
         return "不是1不是1";
     }
}
View Code

然后就发生了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可以正常地显示了。

==========================================================================================================

 

posted @ 2021-02-19 09:53  一夕思醉  阅读(193)  评论(0编辑  收藏  举报