如何使用jQuery将一组JSON对象发布到Struts2动作?

时间:2012-03-14 23:33:20

标签: javascript jquery ajax json struts2

使用Struts2。 在我的行动中,我有一个List<Person> persons;

在javascript中,我有这个功能:

function mytestfunction() {
    var url = "MyAction_mytestfunction.action";
    var params = {};
    var arr = [];
    var p1 = { "firstname" : "John", "lastname" : "Doe"};
    var p2 = { "firstname" : "Rob", "lastname" : "Smith"};
    arr.push(p1); arr.push(p2);
    params["persons"] = arr;
    $.post(url, params, function(data) {
        console.log("done");
    });
}

问题是,post()永远不会到达动作。日志中没有错误,没有。

如果不是发布对象而是发布原语,这一切都会改变。因此,如果我在操作中有List<Integer> nums,在javascript中有params["nums"] = [1,2,3];,那么一切都会正常发布。

那么,有没有办法通过javascript / jquery将JSON对象发布到Struts2动作?

我应该提一下,我使用的是struts-jquery插件,而不是dojo。

2 个答案:

答案 0 :(得分:1)

我对struts一无所知,但这就是我用json POST对象的方式:

$.ajax({
    type: "POST",
    data: JSON.stringify(SOME_JAVASCRIPT_OBJECT),
    contentType: "application/json; charset=utf-8"
    // etc: etc
});

答案 1 :(得分:0)

您可以尝试以下示例:

$.ajax({
       type: "Post",
    url: "action_name",    //you can pass through querystring like actionname?paramname=value
    data : {
           //here comes your param or array 
        },
    dataType:"json",
    contentType: "application/json; charset=utf-8",
});

如果要通过查询字符串类型必须是GET