我如何访问由 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调用

如何在reactjs中访问悬停状态?

如何从我的视图的 javascript 访问我的代码隐藏文件中的 JsonResult 变量?剃刀页面。 C#

如何通过 VueJS 中的操作访问商店?