Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jqueryajax函数数据的动态参数_Jquery_Struts2 - Fatal编程技术网

jqueryajax函数数据的动态参数

jqueryajax函数数据的动态参数,jquery,struts2,Jquery,Struts2,我有一个标准的jQueryAjax函数,如下所示 $.ajax({ type: "POST", url: "/myApp/InsertRecord.action", data: { table:table, issueNumber:issue_number, resultPointer:result_pointer }, success: function(data) { $("#

我有一个标准的jQueryAjax函数,如下所示

    $.ajax({
    type: "POST",
    url: "/myApp/InsertRecord.action", 
    data: {
        table:table,
        issueNumber:issue_number,
        resultPointer:result_pointer
    }, 
    success: function(data) {
        $("#GRID_DIV").html(data);
    }
    });
如果我有一个动态数量的带有动态名称的附加参数,那么仍然可以使用jqueryajax函数吗

为了显示我在做什么,在标准的
.submit()
场景中,我会像这样获取数据:

    public MyAction extends ActionSupport implements ParameterAware, SessionAware, ServletContextAware {
    private Map<String, String[]> parameters;
    .
    .
    .
    Set<String> keySet = parameters.keySet();

因为我知道所有的动态名称至少都以rec_uuu开头,但问题是我没有每个字段的特定getter/setter,因为我不知道它们的全名是什么。

对此我不是100%确定,但我很确定,您可以将要发送到服务器的所有数据聚合到一个数组中,然后发送出去。所以不是

data: {
    field1: data1
    field2: data2
    ...
}

只需将所有字段放入一个数组,然后发送数组即可

参数的数量/类型不相关;您只需要
ParameterAware


没有必要将字段放入数组。

我真正缺少的是.serialize()jQuery函数

我的javascript现在如下所示:

var formForm = $('#issueRecordInputForm').serialize();

var table = '<s:property value="table" />';
var issue_number = '<s:property value="issueNumber" />';
var result_pointer = '<s:property value="resultPointer" />';

$("#table").val(table);
$("#issueNumber").val(issue_number);
$("#resultPointer").val(result_pointer);

$.ajax({

    type: "POST",
    url: "/myApp/InsertRecord.action", 
    data: formForm,
    success: function(data) {
        $("#GRID_DIV").html(data);
    }
});
var formformform=$('#issueRecordInputForm')。序列化();
var表=“”;
var发行号=“”;
var结果_指针=“”;
$(“#表”).val(表);
$(“#发行编号”).val(发行编号);
$(“#结果指针”).val(结果指针);
$.ajax({
类型:“POST”,
url:“/myApp/InsertRecord.action”,
资料:表格,
成功:功能(数据){
$(“#GRID_DIV”).html(数据);
}
});

如您所见,我还删除了之前的三个参数,而是在表单中使用适当的值设置隐藏ID。我无法将我拥有的三个参数与ajax调用的data:part中的serialize调用混合使用。完成此序列化后,struts的Parameterware部分将按照@Dave Newton所述正确处理此信息。

Yep,它将为您序列化数组在我的情况下,传递我需要的数组,就像JSON.stringify(allNames,null,2)一样,因为OGNL被某种东西阻塞了。当我提交时,我的参数集包含了上面代码所期望的所有条目,并且一切正常。但是,参数集不会在ajax调用中填充。我需要某种方法,比如数组生成方法,但是让Struts能够处理动态命名的参数。@demongolem
Parameterware
将对底层请求的参数映射的引用放入本地映射中;请求的类型不相关。如果它们正在被发送,而应用程序堆栈中没有对它们做任何事情,那么它们将在映射中。检查电线,检查拦截器堆栈。参数的名称是不相关的。
var formForm = $('#issueRecordInputForm').serialize();

var table = '<s:property value="table" />';
var issue_number = '<s:property value="issueNumber" />';
var result_pointer = '<s:property value="resultPointer" />';

$("#table").val(table);
$("#issueNumber").val(issue_number);
$("#resultPointer").val(result_pointer);

$.ajax({

    type: "POST",
    url: "/myApp/InsertRecord.action", 
    data: formForm,
    success: function(data) {
        $("#GRID_DIV").html(data);
    }
});