Как вставить значения формы в базу данных через jquery ajax, используя laravel? - PullRequest
1 голос
/ 07 мая 2019

контроллер: UserController.php

<?php
    namespace App\Http\Controllers;
    use Illuminate\Http\Request;
    use DB;
    use App\Http\Requests;
    use App\Http\Controllers\Controller;

    class UserController extends Controller {
        public function insertform() {
            return view('contact-us');
        }
        public function enq()
        {
            $name = $this->input->post('name');
            $phone = $this->input->post('phone');
            $email = $this->input->post('email');
            $msg = $this->input->post('msg');
            $data=array('name'=>$name,"phone"=>$phone,"email"=>$email,"msg"=>$msg);
            DB::table('enquiry')->insert($data);
            echo "Record inserted successfully";
        }
    }

Просмотр: Contact-us.blade.php

<script>
    $(document).ready(function(){
        $("#submit").click(function(e){
            e.preventDefault();
            name = $("#name").val(); 
            phone = $("#phone").val();
            email = $("#email").val();
            msg = $("#msg").val();
            $.ajax({
                type:"POST",
                data:{"name":name,"phone":phone,"email":email,"msg":msg},
                url:"/enq",
                success:function(data){
                    $("#success").html(data);
                }
            });
        });
    });
</script>
<div id="success"></div>
<form method="post">
    <input type="text" placeholder="Your Name" name="name" id="name">
    <input type="text" placeholder="Phone Number" name="phone" id="phone">
    <input type="text" placeholder="Email Adress" name="email" id="email">
    <textarea placeholder="Massege" name="msg" id="msg"></textarea>
    <input type="submit" name="submit" id="submit" value="submit now" class="btn-blue">
</form>

web.php

<?php
Route::get('contact-us', function () {
    return view('contact-us');
});
Route::post('enq','UserController@enq');

Я новичок в laravel. Вот что я делаю, собираюсь вставить простое значение формы в базу данных. Теперь, что происходит, когда я нажимаю кнопку отправки, это ничего не показывает. Я понятия не имею об этом. Итак, как я могу это сделать? Пожалуйста, помогите мне.

Спасибо

Ответы [ 2 ]

1 голос
/ 07 мая 2019

Измените функцию enq

public function enq(Request $request)
       {
           $name  = $request->name;
           $phone = $request->phone;
           $email = $request->email;
           $msg   = $request->msg;
           $data=array('name'=>$name,"phone"=>$phone,"email"=>$email,"msg"=>$msg);
           DB::table('enquiry')->insert($data);
           echo "Record inserted successfully";
       }

А также настройте токен CSRF

, добавьте <meta name="_token" content="{!! csrf_token() !!}"/> в свой головной блок

, а затем

 $.ajaxSetup({
        headers:
            {'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')}
    });

Добавьте этот код перед вызовом ajax

0 голосов
/ 07 мая 2019
  1. Добавление дополнительных данных, токена в запросе ajax.

        $.ajax({
            type:"POST",
            data:{"name":name,"phone":phone,"email":email,"msg":msg,"_token":"{{csrf_token()}}"},
            url:"{{URL::to('enq')}}",
            success:function(data){
                $("#success").html(data);
            }
        });
    
  2. Чтобы проверить наличие ошибок, вы можете нажать F12 на клавиатуре и увидеть консоль. Ошибки отображаются красным цветом, и если код ошибки 500, то это относится к php
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...