我如何访问由 javascript 中的操作传递的参数?
Posted
技术标签:
【中文标题】我如何访问由 javascript 中的操作传递的参数?【英文标题】:How can i access a parameter passed by an action in javascript? 【发布时间】:2012-06-09 19:52:41 【问题描述】:我正在使用 struts2 并且在执行操作后触发此代码(通过 Ajax):
dojo.event.topic.subscribe("cambioProyecto", function()
var hola = json_entregables;
alert("hola");
*json_entregables* 变量是通过 struts2 给出的参数。我可以在jsp中访问它,没问题。但我不能在脚本中。有什么问题?
【问题讨论】:
【参考方案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();
无论如何,我认为这不是一个好方法,所以我不会推荐它。但它对我有用。感谢您的支持。
【讨论】:
【参考方案2】:您的匿名函数是一个回调函数。当您的 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 发送什么,你可以使用你最喜欢的调试器来检查函数参数数组,看看里面有什么。
【讨论】:
非常感谢。我觉得我越来越近了。它真正发送给我的是struts.xml 文件指定的整个jsp。我仍然不知道如何访问参数。 很遗憾,我对 struts 或 dojo 没有任何经验。也就是说,从 ajax 调用返回的内容永远无法执行。 Ajax 框架通常具有用于将返回的序列化信息转换为有用信息的工具。如果不将其序列化、发送到客户端,然后显式反序列化,就无法访问您在服务器上(在您的 .jsp 中)使用的数据对象。例如,数据对象可能被编写为 JSON,发送到您的客户端,然后转换为 javascript。我不确定您会在客户端上使用 jsp 文件做什么。 它向我发送了一个带有 jsp html 代码的字符串。这个 html 包含我想要的数据。有没有办法可以把这个字符串变成一个 jquery 对象?以上是关于我如何访问由 javascript 中的操作传递的参数?的主要内容,如果未能解决你的问题,请参考以下文章
如何将视图中的 javascript 代码中的对象列表传递给控制器中的操作方法
如何在websocket javascript客户端中传递授权承载访问令牌
如何在javascript fetch中存储访问令牌并传递给下一个api调用