ajax传数据及后台接收

本文介绍了如何使用Ajax传递JSON数组,通过JSON.stringify转换数据为字符串。在浏览器的Network面板中,可以看到请求的Headers,其中URL参数位于Query String Parameters,可通过request.getParameter获取;而data中的参数位于Request Payload,需通过流方式获取,例如转化为String后再处理。内容涉及到后台如何解析接收到的数组数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<script type="text/javascript">  
    $(document).ready(function(){  
        var saveDataAry=[];  
        var data1={"userName":"test","address":"gz"};  
        var data2={"userName":"ququ","address":"gr"};  
        saveDataAry.push(data1);  
        saveDataAry.push(data2);         
        $.ajax({ 
            type:"POST", 
            url:"user/saveUser", 
            dataType:"json",      
            contentType:"application/json",               
            data:JSON.stringify(saveData), 
            success:function(data){                               
            } 
         }); 
    });  
</script>

使用ajax传json数组的时候  JSON.stringify(saveData)表示把 saveData 序列化成 字符串

 

使用F12   –>    点击Network    ->   鼠标点击请求 可以看到 Headers中有传过去的参数  

1.url中   "?"拼接的属性放在Query String Parameters  这类数据在后台 request.getParameter(“key”)的方式获取;

2. data中传的参数放在 Request Payload 中 这类数据要使用流的方式获取  下面介绍两种方式:

Method1:
private String getStringFromStream(HttpServletRequest req) {
	    	ServletInputStream is;
		    try {
			    is = req.getInputStream();
			    int nRead = 1;
			    int nTotalRead = 0;
			    byte[] bytes = new byte[10240];
			    while (nRead > 0) {
				    nRead = is.read(bytes, nTotalRead, bytes.length - nTotalRead);
				    if (nRead > 0)
					    nTotalRead = nTotalRead + nRead;
			    }
			    String str = new String(bytes, 0, nTotalRead, "utf-8");
			    return str;
		    } catch (IOException e) {
			    e.printStackTrace();
			    return "";
		    }
}
Method2:
private String getRequestPayload(HttpServletRequest req) 
{ 
    StringBuilder sb = new StringBuilder(); 
    try(BufferedReader reader = req.getReader();) 
    { 
          char[]buff = new char[1024]; 
          int len; 
          while((len = reader.read(buff)) != -1)
          { 
            sb.append(buff,0, len); 
          } 
    }catch (IOException e) { 
        e.printStackTrace(); 
    } 
    return sb.toString(); 
}

获取到的是String字符串 之后可以根据具体数据类型进行转译

如上图可以知道这是一个数组 每个数组可以解析成一个bean

    List<Customized> list1 = new ArrayList();  
    // 先把json 字符串转换为json 数组
    JSONArray jsonArray1 = JSONArray.fromObject(customized);  
    //循环获取json数组中的 json 对象,然后转换为 object
    for (int i = 0; i < jsonArray1.size(); i++) 
    {  
        JSONObject jsonObject2 = jsonArray1.getJSONObject(i);  
        Customized cust = (Customized) JSONObject.toBean(jsonObject2, Customized.class);  
        list1.add(cust);  
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值