如何使用 jQuery $.ajax 将请求参数数组发送到 servlet?

Posted

技术标签:

【中文标题】如何使用 jQuery $.ajax 将请求参数数组发送到 servlet?【英文标题】:How to send request parameter array to servlet using jQuery $.ajax? 【发布时间】:2012-10-25 20:28:35 【问题描述】:

我想使用 jQuery $.ajaxjavascript 数组发送到 servlet。

var json=[1,2,3,4];
$.ajax(
            url:"myUrl",
            type:"POST",
            dataType:'json',
            success:function(data)
                // codes....
            ,
            data:json

        );

当我使用时

request.getParameter("json");
request.getParameterValues("json");

它返回空值。

如何访问这些值?

【问题讨论】:

data 是一个 JSON 对象,所以它必须像 data: name value pair, where value could be a object 我在任何地方都没有看到你定义了一个名为 json 的参数,所以我不确定你为什么会期望 getParameter("json") i> 返回 null 以外的任何内容。 您是否要发布到服务器端文件?例如将数据存储在数据库中? 【参考方案1】:

将数组作为 JS 对象的值发送,因此您最终会成为 json:[1,2,3,4]

var json=[1,2,3,4];
$.ajax(
    url:"myUrl",
    type:"POST",
    dataType:'json',
    data: json:json,
    success:function(data)
        // codes....
    ,
);

在servlet中,需要在请求参数名后面加上[]

String[] myJsonData = request.getParameterValues("json[]");

jQuery 附加它们是为了像 php 一样对 weak typed languages 友好。

【讨论】:

在服务器端犯了错误你可能不得不使用.. request.getParameterValues("json[]"); 感谢您的回答。很有帮助!【参考方案2】:

您必须将数组转换为 JSON 类型,因此需要读取而不是 []

 var array = [ 1, 2, 3, 4 ];

为此,您需要调用

 var json = JSON.stringify(array)

然后你可以将它传递给你的 ajax 调用

 $.ajax( url:"myUrl",
          type:"POST",
          data: json,
          dataType:'json',
          success:function(data)
             // codes....
          )

【讨论】:

【参考方案3】:

尝试使用以下脚本 -

 jQuery.ajax(
                    url : "your API",
                    type : "POST",
                    dataType:'json',
                    data: JSON.stringify( jsonData: data ),
                    contentType: "application/json",
                    success : function(response) 
    //do the needful.
    ,
                    error : function(jqXHR, textStatus,
                            errorThrown) 
                        var x = 1;
                        closeLoader();  
                    
                );

如下处理控制器中的请求-

@RequestMapping(value="your url", method = RequestMethod.POST)
public Map<String, Object> verifyRefundRequested(@RequestBody String data) throws UnsupportedEncodingException
        Map<String, Object> responseMap = null;
        Gson g = new Gson();
        responseMap = g.fromJson(data, Map.class);
        List<String> s = (List<String>) responseMap.get("jsonData");
//iterate list and process 
// return map
        

【讨论】:

【参考方案4】:

您需要像这样发布您的 javascript 数据对象..

http://api.jquery.com/jQuery.post/

$.post("test.php",  name: "John", time: "2pm" ,
   function(data) 
     alert("Data Loaded: " + data);
   );

【讨论】:

以上是关于如何使用 jQuery $.ajax 将请求参数数组发送到 servlet?的主要内容,如果未能解决你的问题,请参考以下文章

如何:正确使用PHP将数据编码成JSON格式,并通过jquery/ajax请求数据

如何使用jquery监控ajax请求的进度响应

如何在 jQuery 中使用 Ajax 请求发送 FormData 对象? [复制]

如何在 jQuery 中使用 Ajax 请求发送 FormData 对象? [复制]

如何在 jQuery 中使用 Ajax 请求发送 FormData 对象? [复制]

.Net WebAPI+Jquery Ajax 请求参数