2

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

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

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

4

2 回答 2

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();
}

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

于 2012-06-10T04:08:27.850 回答
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 发送什么,您可以使用您最喜欢的调试器检查函数参数数组并查看其中的内容。

于 2012-06-09T20:14:39.780 回答