【问题标题】:How to force Firefox to send an hidden field?如何强制 Firefox 发送隐藏字段?
【发布时间】:2014-03-28 12:57:07
【问题描述】:

这是我的代码:

<s:form
     id="deployChapters%{#chapterTree.nodeId}" 
     action="%{deployChapterUrl}"
     theme="simple"
     method="POST">
     <s:hidden name="nodeId" value"%{#chapterTree.nodeId}" />
</s:form>

我使用 Ajax 提交此表单。使用 Firefox,隐藏字段 nodeId 不会发送。使用 Chrome 或 IE。

如何让FF发送隐藏字段?

【问题讨论】:

    标签: java firefox parameters struts2 ognl


    【解决方案1】:

    向表单添加一个提交按钮,更改 id 属性,以便使用 jQuery 轻松选择它并附加处理程序

    <s:form
         id="deployChaptersForm" 
         action="%{deployChapterUrl}"
         theme="simple"
         method="POST">
         <s:hidden name="nodeId" value"%{#chapterTree.nodeId}" />
         <s:submit/>
    </s:form>
    <script type="text/javascript"> 
     // Attach a submit handler to the form
     $("#deployChaptersForm").submit(function(event) {
       //Stop form from submitting normally
       event.preventDefault();
       //Get some values from elements on the page:
       var $form = $(this),
       value = $form.find("input[name='nodeId']").val(),
       url = $form.attr("action");
       //Send the data using post
       var thePost = $.post(url, {nodeId: value});
       //Handle results in data
       thePost.done(function(data) {
        alert(data);
       });
     });
    </script>
    

    【讨论】:

    • 我不熟悉这个插件,但我认为您可以使用该 API 部分序列化 nodeId 的表单并将其替换为 $.post 的第二个参数。
    【解决方案2】:

    最后,这是我想出的解决方案:

    • 我检测到何时提交表单并以编程方式将隐藏字段添加到表单中。

    【讨论】:

      【解决方案3】:

      Struts/JSP 代码(即服务器端代码)不依赖客户端浏览器来呈现 HTML。

      所以,问题在于您的 Javascript 函数,它使用基于 html 表单数据的数据发送 Ajax 请求(发布或获取)。

      请检查/调试您的 Javascript 代码以修复它。

      【讨论】:

      • 感谢您的贡献 :)
      猜你喜欢
      • 1970-01-01
      • 2013-08-29
      • 2019-01-02
      • 2016-12-18
      • 1970-01-01
      • 2011-06-19
      • 2014-10-07
      • 2013-04-06
      • 2011-07-25
      相关资源
      最近更新 更多