【问题标题】:How can i access a parameter passed by an action in javascript?我如何访问由 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中访问它,没问题。但我不能在脚本中。有什么问题?

【问题讨论】:

    标签: javascript struts2 dojo


    【解决方案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 对象?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 2013-09-21
      • 2021-10-18
      相关资源
      最近更新 更多