【问题标题】:form submit doesnt work when updating database through a pop up form通过弹出表单更新数据库时表单提交不起作用
【发布时间】:2019-06-10 19:52:41
【问题描述】:

表单提交不起作用。当我单击弹出表单中的更新按钮时,页面重新加载并且数据未更新

这是脚本 $(document).off('click','.updatepro'); $(document).on('click','.updatepro',function(){

var userid = $(this).data('userid');
var url = baseurl+'/update';
var infoData= {userid:userid,_token:token};
$.post(url,infoData,function(response){

})

});

这是我的控制器 公共函数更新(请求 $request,$id) {

    $user = User:: findorFail($id);

    $user->name = $request->input('name');
    $user->username = $request->input('username');
    $user->email = $request->input('email');
    $user->address = $request->input('address');
    $user->phone = $request->input('phone');
    $user->designation = $request->input('designation');
    $user->deviceid = $request->input('deviceid');
    echo'<pre>';
    print_r($request-all());
    exit;

    $user->save();

}

这是路线 Route::post('/update', 'GetdataController@update');

我想要的是要提交的数据和从我选择要更新的数据的地方打开同一页面

【问题讨论】:

    标签: javascript ajax laravel


    【解决方案1】:

    你应该试试这个:

    //modal form to show all the required inputs and make one field hidden
    
    <div id="updateFormID" class="modal fade" >
            <div class="modal-dialog box box-default" role="document">
              <div class="modal-content">
                <div class="modal-header">
                  <h4 class="modal-title">Edit Bank</h4>
                  <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                  </button>
                </div>
                <form class="form-horizontal" action="{{ url('/update') }}" method="post"  role="form">
                        {{ csrf_field() }}
                <div class="modal-body">  
                    <div class="form-group" style="margin: 0 10px;">
    
                  <input type="hidden" class="form-control" id="recordid" name="recordid" value="">   
    
                  <label> Name </label><input type="text" class="form-control" id="name" name="fname" value="">
                  <label>UserName: </label><select required class="form-control" id="username"  name="userName">    
    
                   <label>Email: </label><select required class="form-control" id="email"  name="email">  
    
    
                  <label>Address: </label><input type="text" class="form-control" id="address" name="address" value="">
    
     <label>Phone: </label><input type="text" class="form-control" id="phone" name="phone" value="">
    
    
    
                    </div>
                </div>
                    <div class="modal-footer">
                        <button type="submit" class="btn btn-success btn-xs">Update</button>
                        <button type="button" class="btn btn-secondary btn-xs" data-dismiss="modal">Cancel</button>
                    </div>
    
                    </form>
                </div>
    
              </div>
            </div>
    
    
    //link on your view to trigger popup the modal. this link displays record gotten from db
    <a onclick="updateForm('{{$record->userid}}','{{$record->name}}','{{$record->username}}','{{$record->email}}','{{$record->address}}','{{$record->phone}}')" style="cursor: pointer;"><i class="fa fa-edit"></i>Edit</a>
    
    //javascript function to load modal and assign the record to inputes
    function updateForm(r,x,y,z,w,s)
        {
            document.getElementById('recordid').value = r;
            document.getElementById('name').value = x;
            document.getElementById('username').value = y;
            document.getElementById('email').value = z;
            document.getElementById('address').value = w;
            document.getElementById('phone').value = s;
    
    
            $("#updateFormID").modal('show')
        }
    

    //你的控制器

    in your controller you have get the values and save to db
    
    public function Update(Request $request)
    {
    
        $recordid = $request->input('recordid');
        $name = $request->input('name');
        $username = $request->input('username');
        $email = $request->input('email');
        $address = $request->input('address');
        $phone = $request->input('phone');
    
        $update=DB::table('tbl')->where('id',$recordid )->update(['name' =>$name,'username' =>$username,'email' =>$email,'address'=>$address,'phone'=>$phone]);
    
      return redirect();
    
    
    }
    
    //route
     Route::post('/update', 'GetdataController@Update');
    
    Note: make sure to call/import the DB facade on top. this is query builder.
    use DB;
    

    【讨论】:

    • 效果很好。我在 $post 中发送了 ID 并更新了数据库。但是提交后的弹出表单关闭并且整个页面重新加载。我可以在 ajax sumbit 之后刷新显示数据的选项卡,而无需重新加载整个页面,因为数据显示在选项卡中。 $(document).off('click','.updatepro'); $(document).on('click','.updatepro',function(){ alert(0); $('#user-update').ajaxSubmit({ // dataType:'json', success:function( response){ $('#userupdate').modal('close'); } }) });
    • 是的。你能帮我用脚本在ajax提交后关闭弹出窗口并重新加载选项卡而不刷新视图吗?谢谢队友
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多