如何在javascript中访问动作传递的参数?

时间:2012-06-09 19:52:42

标签: javascript struts2 dojo

我正在使用struts2,并且在执行操作后(通过Ajax)触发此代码:

    dojo.event.topic.subscribe("cambioProyecto", function() {
            var hola = json_entregables;
            alert("hola");
    }

* json_entregables *变量是通过struts2给出的参数。我可以在jsp中访问它,没问题。但我不能在剧本中。有什么问题?

2 个答案:

答案 0 :(得分:1)

我找到了一种方法来收集我想要的东西,但这是相当不洁净的。由于匿名函数是Ajax进程的回调函数,因此我通过定义函数的参数来捕获响应。该响应是一个字符串,其中包含响应的实际html。

现在,要访问参数,我必须将其值作为隐藏元素包含在jsp中。像这样:

<s:hidden id="hidden_json_entregables" value="%{json_entregables}"/></p>

然后,我通过jquery这样得到它:

dojo.event.topic.subscribe("cambioProyecto", function(jsp) {
        var o = $(jsp)
        var string_entregables = o.find("#hidden_json_entregables").text();
}

无论如何,我不认为这是一个好方法,所以我不推荐它。但它对我有用。感谢您的支持。

答案 1 :(得分:0)

您的匿名函数是一个回调函数。当你的ajax调用完成时,它由struts2调用。我没有看过struts2,但它会发送你的回调函数参数。您需要在匿名函数定义中声明这些参数,以便可以访问它们。

所以,如果json_entragables是从struts2返回到你的回调的对象,那么你需要编写你的回调函数:

dojo.event.topic.subscribe("cambioProyecto", function(json_entregables) {
        //console.log(arguments)
        var hola = json_entregables;
        alert("hola");
}

当然,在这种情况下,您可以将json_entragables重命名为您喜欢的任何内容。如果您不确定struts2发送的是什么,您可以使用自己喜欢的调试器来检查函数arguments数组并查看其中的内容。