代码之家  ›  专栏  ›  技术社区  ›  user7747472

如何在Laravel中提交保持现有查询字符串完整的表单

  •  1
  • user7747472  · 技术社区  · 7 年前

    我有一个类似这样的网址: foo?country=usa&state=ny 而在 foo 我有一个表格给了我 firstname 和; lastname 再加上一个提交按钮。

    但是当我点击 submit 它给予 foo?firstname=john&lastname=doe 另一个问题,即国家和国家消失了,或者换句话说,我正在失去它们。

    有人能告诉我,即使我提交了表格,我怎样才能为他们提供服务?

    请注意:我不能使用任何隐藏字段,因为foo-blade中有许多表单,也可能有许多查询可以到达foo-blade,不仅是国家和州,还有年龄、邮政编码等。

    我在foo.blade.php中的表单如下

    <form method="get" action ="{{Request::fullUrl()}}">
       <div class="form-group">
          <input type="text" class="form-control" name="firstname" placeholder="first name">
        </div>
    
        <button type="submit" class="btn btn-green-small">Apply</button>
    </form>
    
        //Another form
     <form method="get" action ="{{Request::fullUrl()}}">
    
           <div class="form-group">
              <input type="text" class="form-control" name="lastname" placeholder="first name">
               </div>
            <button type="submit" class="btn btn-green-small">Apply</button>
        </form>
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   dashboard bloodyKnuckles    7 年前

    步骤1-可以使用jquery将onSubmit事件挂接到表单,在那里可以序列化()表单字段以生成包含firstname&lastname字段的格式为www form urlencoded的字符串。

    第二步-既然你有你的国家,你可以很容易地从网址上删除国家信息。 window.location.href .

    然后手动组合新的查询字符串以附加请求URL。

    例子:

    说你的表格有id=“myform”

    $("#myform").on("submit",function(){
      event.preventDefault(); //prevent submission
      let formData = $(this).serialize(); //outputs firstname=blah&lastname=moreblah
    
      let fullUrl = window.href.location;
      let queryPart = fullUrl.split("?")[1]; //here you have country=usa&state=ny
    
      let finalForm = queryPart + "&" formData;  //country=usa&state=ny&firstname=blah
    
      // submit here using 'finalForm' after your request endpoint
    });
    

    为了清楚起见,我省略了空/空检查。

    推荐文章