分享

java servlet 获取ajax json null 应该如何写ajax【重要】

 一本正经地胡闹 2019-09-06

       var jsonObject = new Object();

        jsonObject.name = "jack";

        jsonObject.phone = "13879013334";

        jsonObject.id = "asdghj";

        

        $.ajax({

            type:"POST",

            url: "${pageContext.request.contextPath}/ajax",

            //contentType: "application/json", //用servlet获取 不需要写这个 因为写了post类型,默认application/x-www-form-urlencoded

            dataType: "json", //服务器返回的数据类型。可以写json,也可以写text 有时候后台发过来的json格式字符串会有问题,如BOM头,用json会拿不到数据,需要用text来测试           

            data: jsonObject//发送到服务器的参数,直接用json对象。因为contentType没有用"application/json"就不需要用JSON.stringify(jsonObject)转字符串,

            success: function (data) {

                console.log(data)

            },

            error: function (data){

                alert("解析数据失败!");

        }

        });      

解读:

客户端提交的contentType只能为application/x-www-form-urlencoded或者multipart/form-data,二进制数据使用多重编码。前面默认编码,即字符串,后者为文件。但如果从服务器下载的话编码就很多了,比如你说的application/json,text/plan,application/image.....等都可以。


用springmvc的注解@RequestBody Map<String, String> params 可以接收到用ajax发来的参数.

前台代码

$.ajax({

type : "POST",
url : url,
data : data,
dataType : "JSON",
contentType:"application/json",
success : function(result) {
alert(result);
}
});

后台代码
@RequestMapping(value = "/sk/api/params", method = RequestMethod.POST)
public void params(@RequestBody Map<String, String> params, HttpServletRequest request, HttpServletResponse response) {

System.out.println("总共获取到:"+params.size()+"个参数");
for(String key : params.keySet()){
System.out.println(key + " : " + params.get(key));
}
writeJson(response, "ok");
}

不用框架,前端request的contentType是application/json的话,这样获取

StringBuffer json = new StringBuffer();
BufferedReader reader = request.getReader();
while ((line = reader.readLine()) != null) {
json.append(line); 

//若前端发送的是json格式字符串,即用JSON.stringify(obj)转换,

                                            拿到的是{"name":"jack","phone":"13879013334","id":"asdghj"}

//若前端发送的是json对象,拿到的是name=jack&phone=13879013334&id=asdghj

return json.toString();

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多