2012-03-14 24 views
0

使用Struts2。 在我行动我有一个List<Person> persons;如何使用jQuery将JSON对象数组发布到Struts2动作?

在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"); 
    }); 
} 

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

这一切都改变,而不是张贴对象我张贴原语。因此,当我在Action中使用List<Integer> nums并且在javascript中使用params["nums"] = [1,2,3];时,所有内容都会发布正常。

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

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

+0

为什么不使用S2 Json插件,它将负责在UI和Action类之间发送和接收JSON数据? – 2012-03-15 01:24:47

+0

我将如何使用JSON插件发送到使用struts-jquery插件的动作?我见过的例子使用dojo,而不是jquery。 – Valera 2012-03-15 15:08:24

回答

1

我不知道支柱什么,但我这是怎么员额的使用JSON:

$.ajax({ 
    type: "POST", 
    data: JSON.stringify(SOME_JAVASCRIPT_OBJECT), 
    contentType: "application/json; charset=utf-8" 
    // etc: etc 
}); 
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

相关问题