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

18

我想使用 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");

它返回null。

我如何访问这些值?


1
数据是一个JSON对象,因此它必须像这样:data: {名称值对,其中值可以是一个对象}。 - Dhruvenkumar Shah
1
我没有看到你定义名为_json_的参数,所以我不确定为什么你期望_getParameter("json")_返回除null之外的任何内容。 - jahroy
你是想要向服务器端文件进行提交吗?比如将数据存储到数据库中? - user1171884
4个回答

36
将数组作为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)更加友好。

1
在服务器端犯了一个错误,你可能需要使用: request.getParameterValues("json[]"); - Raunak Agarwal
谢谢你的答案,非常有帮助! - swapyonubuntu

0

你需要将数组转换为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....
          }})

0

请尝试使用以下脚本 -

 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
        }

-1

你需要像这样发布你的JavaScript数据对象...

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接