【问题标题】:Submitting a form (post, NOT ajax) with some additional parameters提交带有一些附加参数的表单(post,不是 ajax)
【发布时间】:2014-09-01 19:19:22
【问题描述】:

我需要通过单击表单提交来执行非 ajax 发布。在提交之前,我必须添加一些额外的表单参数。这是我的做法:

  $("#my_form").on("submit", function (e) {
    e.preventDefault();
    var data = $(this).serializeArray();
    data.push({"name": "extra data1", "value": "extra value 1"});
    var params = $.param(data);
    //what's next?
    //$.post($(this).attr("action"), data: params); // ajax request, I don't need an ajax request
  });

但是我如何实际提交表单以便它发送不仅它的参数,而且其他的我已经添加到它呢?显然,$(this).submit(); 不会这样做。

【问题讨论】:

    标签: javascript jquery forms


    【解决方案1】:

    您可能希望看到这个 SO 问题:Jquery - Create hidden form element on the fly

    在你的情况下,我想你可以做这样的事情来添加一个隐藏的输入:

    $("#my_form").on("submit", function (e) {
    
       $('<input>').attr({
            type: 'hidden',
            name: 'extra data1',
            value: 'extra value 1'
        }).appendTo($(this));  
    
    });
    

    演示:http://jsfiddle.net/naokiota/XyLUV/


    或者,你可以这样做:

    $("#my_form").on("submit", function (e) {
    
       $('<input type="hidden" name="extra data1" value="extra value 1">')
       .appendTo($(this));
    
    });
    

    演示:http://jsfiddle.net/naokiota/Kkq6F/1/

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      您可以为此目的使用隐藏输入。添加

      <INPUT TYPE='hidden' NAME='param1' VALUE='data1' ID='param1'>
      

      这将被提交给 php.ini。

      您可以通过 jQuery 更改此字段的值

      $('#param1').value = 'data12';
      

      【讨论】:

        【解决方案3】:

        与其将数据从表单中提取出来,然后操纵你得到的数据结构,不如在提交之前将隐藏的输入元素添加到表单中。

        【讨论】:

          猜你喜欢
          • 2013-05-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-01
          • 2023-04-08
          • 2016-05-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多