我正在使用 struts2 并在执行操作后触发此代码(通过 Ajax):
dojo.event.topic.subscribe("cambioProyecto", function() {
var hola = json_entregables;
alert("hola");
}
*json_entregables* 变量是通过 struts2 给出的参数。我可以在jsp中访问它,没问题。但我不能在脚本中。问题是什么?
我正在使用 struts2 并在执行操作后触发此代码(通过 Ajax):
dojo.event.topic.subscribe("cambioProyecto", function() {
var hola = json_entregables;
alert("hola");
}
*json_entregables* 变量是通过 struts2 给出的参数。我可以在jsp中访问它,没问题。但我不能在脚本中。问题是什么?
我想出了一种方法来获得我想要的东西,但它相当不干净。由于匿名函数是来自 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();
}
无论如何,我认为这不是一个好方法,所以我不会推荐它。但它对我有用。感谢您的支持。
您的匿名函数是一个回调函数。当您的 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 发送什么,您可以使用您最喜欢的调试器检查函数参数数组并查看其中的内容。