小编典典

如何使用jQuery Ajax将JavaScript数组发送到Struts动作

ajax

我是Struts 2的新手。我想使用jQuery AJAX请求将javascript数组发送到Struts动作类。
警报运行正常,但execute()没有运行。
当我把 System.out.println("language : "+ language);execute()方法,输出

语言:null

var langArr = [];
    $("#language").each(function()
    {
      var selectedLang = $("select").val();
      var selectedValues = $(this).val();
      langArr.push(selectedValues);
     });
    alert("Languages : " + langArr);

    $.ajax({
        method: "POST",
        url: "getProjectPost",
        data: { "language" : langArr },
        dataType : "json",
        traditional: true,
        success:
            function()
            {
             alert("Success");
            },
        error: 
           function()
            {
             alert("Error");
            }
    });

这是我的动作课

public class ProjectPostAction {

    private int[] language;

    public final int[] getLanguage() {
        return language;
    }

    public final void setLanguage(int[] language) {
        this.language = language;
    }

    public String execute() throws Exception {          
           System.out.println("language : "+ language[0]);
           return "success";    
    }

阅读 159

收藏
2020-07-26

共1个答案

小编典典

$.param当使用进行ajax请求时,jQuery
内部使用参数序列化发送的数据$.ajax

数据应设置为整数数组或带有逗号分隔的整数列表的字符串,因此jQuery可以在发送请求之前正确序列化它。

您只能通过traditional设置将数组参数发送到struts2,因为struts使用类型转换来使用键作为参数名称来填充操作的属性。

因此,该数组应该是原始整数的数组,但是您的数组包含不是原始整数的其他对象。

为了进行演示,您可以看到这一点,demo以了解如何获取参数值并将其序列化,就像执行操作一样$.ajax

2020-07-26