Laravel 使用 Ajax 提交表单而不刷新页面

Posted

技术标签:

【中文标题】Laravel 使用 Ajax 提交表单而不刷新页面【英文标题】:Laravel Submit Form Without Page Refresh Using Ajax 【发布时间】:2020-10-13 09:37:31 【问题描述】:

我想在我的模态弹出表单中发布电话号码。但不想在提交表单后点击“继续”按钮消失弹出窗口。这是我的 Blade.php 代码。

            <div id="modal-wrapper" class="modal">
  
              <form class="modal-content animate" id="addform">
               
                               
                    <input type="text" class="form-control" name="phone_number" placeholder="01**********">
                  </div> 
                  </div>
                  
                <div style="text-align: center; margin-top: 10px;padding-left:18px;">
                  <button type="submit"  style="background-color: #a5abb0;" class="mobile-login__button">CONTINUE
                </button>
              </div>

这是我的 ajax 部分代码的脚本部分。

 <script>
                
                  $("#addform").on('submit',function(e)
                    e.preventDefault();
              
                    $.ajax(
                      type:"post"
                      url: "/client-mobile-login"
                      data: $("addform").serialize(),
                      success:function(response)
                        
                      ,
                      error:function(error)
                        console.log(error)
                        alert("not send");
                      
              
                      );
                    );
                  
                );
              
                </script>

这是我的控制器功能

     public function client_mobile_login(Request $request)
      
       $client_phone1='88'.$request->input('phone_number');
    
    $result=DB::table('client')
            ->where('client_phone1',$client_phone1)
            ->first();
            here is my otp sending code.... 

            if($result)
                   
                   $request->session()->put('client_title', $result->client_title);
                   

               // print_r($client_phone1);
                

【问题讨论】:

&lt;script&gt; 部分是否在 &lt;form&gt; 部分之后? 【参考方案1】:

使用 type=button

<button type="button" id="submitForm" ...>CONTINUE</button>

并在点击事件上触发您的 ajax

$("#submitForm").on('click',function(e) ... 

【讨论】:

它阻止了页面的重新加载。但是控制器内部的查询在这里不起作用,怎么办? 你得到什么错误?另外,请确保在您的 post call 中使用 _token。 我使用了 csrf 令牌。当我点击“继续”按钮时,什么也没有发生。页面保持原样。没有变化。 检查您的网络控制台。您是否看到正在提出请求?如果是,那么在 ajax 成功或错误时......做一些事情

以上是关于Laravel 使用 Ajax 提交表单而不刷新页面的主要内容,如果未能解决你的问题,请参考以下文章

使用 AJAX 和 PHP 提交表单并带有成功响应文本而不刷新页面

如何使用 ajax 提交带有 3 个提交按钮的表单而不重定向到 Laravel 中的表单操作 url?

使用Jquery时无法读取数据库,Ajax提交表单而不刷新页面

ajax中的表单提交而不刷新整个页面只刷新ATG中的特定div标签

如何使用ajax jquery显示插入的查询数据而不刷新

Ajax 表单提交在第一次提交时返回错误,但在第二次单击时提交