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

我想使用 jQuery $.ajax 将 JavaScript 数组发送到 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 以外的任何内容。
  • 您是否要发布到服务器端文件?例如将数据存储在数据库中?

标签: jquery arrays ajax servlets


【解决方案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);
         });
      

      【讨论】:

        猜你喜欢
        • 2015-11-25
        • 2013-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-23
        相关资源
        最近更新 更多