簡體   English   中英

用ajax發送數據后,數據未保存到mysql數據庫中。 無法找出問題所在

[英]after sending data with ajax,Data is not saving into the mysql database. Can't figure out whats the problem

我正在嘗試使用數據表在laravel中開發Ajax CRUD。 我只發送了一些字段(名字,姓氏和圖片)而成功。 但是對於所有其他字段,沒有數據存儲。 也沒有錯誤消息。 所以我不知道我在哪里搞砸了。

服務器端驗證正在運行。 但是之后沒有錯誤消息或活動。我試圖存儲來自控制器的數據而不直接從$ request分配數據。 (即'gender'=>“ male”)。 但無法正常工作的項目鏈接: https : //drive.google.com/open?id=1KclRdYFL-xwS1w0T2xXmljQGjBhGuTH_

數據庫表: 數據庫

HTML表單:

<form method="post" id="sample_form" class="form-horizontal" enctype="multipart/form-data">
            @csrf
            <div class="form-group">
                <label class="control col-md-4" >First Name : </label>
                <div class="col-md-8">
                    <input type="text" name="first_name" id="first_name" class="form-control" required/>
                </div>
            </div>
            <div class="form-group">
                <label class="control-label col-md-4">Last Name : </label>
                <div class="col-md-8">
                    <input type="text" name="last_name" id="last_name" class="form-control" required/>
                </div>
            </div>
             <div class="form-group">
                 <label class="control-label col-md-4">Email : </label>
                 <div class="col-md-8">
                     <input type="email" name="email" id="email" class="form-control" required />
                 </div>
             </div>
             <div class="form-group">
                 <label class="control-label col-md-4">Mobile No : </label>
                 <div class="col-md-8">
                     <input type="number" name="mobile" id="mobile" class="form-control" />
                 </div>
             </div>
             <div class="form-group">
                 <label class="control-label col-md-4">Address : </label>
                 <div class="col-md-8">
                    <textarea name="address" id="address" rows="3" class="form-control" required></textarea>
                 </div>
             </div>
             <div class="form-group">
                 <label class="control-label col-md-4">Gender : </label>
                 <div class="col-md-8">
                     <div class="btn-group btn-group-toggle" data-toggle="buttons">
                         <label class="btn btn-secondary">
                             <input type="radio" name="gender" value="male" id="gender" autocomplete="off"> Male
                         </label>
                         <label class="btn btn-secondary">
                             <input type="radio" name="gender" value="female" id="gender" autocomplete="off"> Female
                         </label>
                     </div>
                 </div>
             </div>
             <div class="form-group">
                 <label class="control-label col-md-4">Hobbies : </label>
                 <div class="col-md-8">
                 <div class="checkbox">
                     <label><input type="checkbox" name="hobbies[]" value="Swimming">Swimming</label>
                 </div>
                 <div class="checkbox">
                     <label><input type="checkbox" name="hobbies[]" value="Reading">Reading</label>
                 </div>
                 <div class="checkbox">
                     <label><input type="checkbox" name="hobbies[]" value="Gardening">Gardening</label>
                 </div>
                 </div>
             </div>
            <div class="form-group">
                <label class="control-label col-md-4">Select Profile Image : </label>
                <div class="col-md-8">
                    <input type="file" name="image" id="image" required />
                    <span id="store_image"></span>
                </div>
</div>
<br />
<div class="form-group" align="center">
    <input type="hidden" name="action" id="action" />
    <input type="hidden" name="hidden_id" id="hidden_id" />
    <input type="submit" name="action_button" id="action_button" class="btn btn-warning" value="Add" />
</div>
</form>

在Controller中存儲方法:

 public function store(Request $request)
    {

        $rules = array(
            'first_name'    =>  'required|min:4',
            'last_name'     =>  'required|min:4',
            'address'       =>  'required',
            'mobile'        =>  'required|min:9|max:13',
            'image'         =>  'required|image|max:2048',
            'email'         =>  'required|unique:ajax_cruds',
        );
        $hobbies = implode(',',$request->hobbies);
        $error = Validator::make($request->all(), $rules);

        if($error->fails())
        {
            return response()->json(['errors' => $error->errors()->all()]);
        }

        $image = $request->file('image');

        $new_name = rand() . '.' . $image->getClientOriginalExtension();

        $image->move(public_path('images'), $new_name);


            $form_data = array(
                'first_name'        =>  $request->first_name,
                'last_name'         =>  $request->last_name,
                'image'             =>  $new_name,
                'address'           =>  $request->address,
                'gender'           =>  $request->gender,
                'number'           =>  $request->mobile,
                'hobbies'           =>  $hobbies,
                'email'           =>  $request->email
            );


            AjaxCrud::create($form_data);


        return response()->json(['success' => 'Data Added successfully.']);
    }

Javascript:

$('#sample_form').on('submit', function(event){
            event.preventDefault();
            if($('#action').val() == 'Add')
            {
                $.ajax({
                    url:"{{ route('ajax-crud.store') }}",
                    method:"POST",
                    data: new FormData(this),
                    contentType: false,
                    cache:false,
                    processData: false,
                    dataType:"json",
                    success:function(data)
                    {
                        var html = '';
                        if(data.errors)
                        {
                            html = '<div class="alert alert-danger">';
                            for(var count = 0; count < data.errors.length; count++)
                            {
                                html += '<p>' + data.errors[count] + '</p>';
                            }
                            html += '</div>';
                        }
                        if(data.success)
                        {
                            html = '<div class="alert alert-success">' + data.success + '</div>';
                            $('#sample_form')[0].reset();
                            $('#user_table').DataTable().ajax.reload();
                        }
                        $('#form_result').html(html);
                    }
                })
            }

好吧,我想查看$request變量中的所有數據。 但是dd()var_dump()方法均未顯示任何結果。 請幫助我找出問題所在。

您的AjaxCrud模型是什么樣的? 您是否設置了可填充屬性以匹配您要傳遞的數據庫字段名稱?

對於調試Laravel,您是否嘗試過Laravel Debugbar 它會幫助您顯示錯誤,我發現它對於調試Ajax響應非常有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM