Ajax вызов изменений не работает в laravel 5,8 - PullRequest
0 голосов
/ 02 мая 2020

web. php file

Route::group(['middleware'=>['auth','lfwuser']], function(){
    Route::get('/lfwuser_addEngagementData', 'LfwUser\LfwDashboardController@getEngagementData');

    Route::post('/lfwuser_SubDataEngagementData', 'LfwUser\LfwDashboardController@fetchSubData');
});

LfwDashboardController File.

public function getEngagementData(){
        if (Auth::check()) {
            $data = DB::table('table')
                            ->select('col')
                            ->distinct('col')
                            ->get();
            return view('lfwuser.lfwuser_addEngagementData')->with('data', $data);
        }
        else {
            return \view('auth.login');
        }

    }

    public function fetchSubData(Request $request){
        if (Auth::check()) {
            echo "Hello World";
        }
        else {
            return \view('auth.login');
        }

    }

Blade-файл

@extends('layouts.lfwuser') @section('title') LeapForWord | Content Management @endsection @section('content')
<div class="row">
    <div class="col-md-12">
        <div class="card">
            <div class="card-header">
                <center>
                    <h4 class="card-title">Add Data</h4>
                </center>
            </div>
            <div class="card-body">
                <div class="row">
                    <div class="col-md-3">
                    </div>
                    <div class="col-md-6">
                        <form action="/lfwuser_addEngagementData" method="POST" enctype="multipart/form-data ">
                            {{ csrf_field() }} {{ method_field("POST") }}


                            <div class="form-group">
                                <label for="dataType">Data Type</label>
                                <select class="form-control" name="dataType" id="dataType" required>
                                    <option value=" ">--- Select ---</option>
                                    @foreach($data as $datatype)
                                    <option value="{{ $datatype->datatype }}">{{ $datatype->datatype }}</option>
                            @endforeach
                            </select>
                            </div>

                            <div class="form-group">
                                <label for="subdataType">Sub Data Type</label>
                                <select class="form-control" name="subdataType" id="subdataType" required>
                                    <option value="">--- Select ---</option>
                                </select>
                            </div>

                            <div class="form-group">
                                <input type="hidden" class="form-control" name="subDataId" id="subDataId" required>
                            </div>

                            <div class="form-group">
                                <label for="filellink">Link:</label>
                                <input type="text" class="form-control" name="filellink" id="filellink" required>
                            </div>

                            <div class="form-group">
                                <div class="row">
                                    <button type="submit" class="btn btn-outline-success text-center">Submit</button>
                                </div>
                            </div>
                        </form>
                    </div>
                    <div class="col-md-3"></div>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection @section('scripts')
<script>
    $(document).ready(function() {
        $("#dataType").change(function() {
            let datatype = $("#dataType").val();
            let _token = $('input[name="_token"]').val();

            console.log("Data Type: " + datatype);

            if (dataType != '') {
                $.ajax({
                    url: "{{url('')}}/lfwuser_SubDataEngagementData",
                    method: "POST",
                    dataType: "json",
                    data: {
                        datatype: datatype,
                        _token: _token
                    },
                    success: function(response) {
                        console.log("hi" + response);
                    }
                });
            } else {

            }

        });
    });
</script>
@endsection

Ничего не получено в ответ и нет ошибки на приставка. Как мне решить эту проблему? Форма отображается при входе пользователя в систему. Блейд-файл хранится в папке view / user. Я предполагаю ошибку в части URL. URL не вызывается должным образом, иногда он показывает ошибку 419 для файла, это занимает много времени, пожалуйста, дайте мне знать, где я делаю неправильно?

1 Ответ

0 голосов
/ 02 мая 2020

Вы проверили ajax часть? и у вас было jquery в вашем основном шаблоне?

Сначала , вы должны проверить, что ваша ajax часть в блейд-файле работает правильно

console.log("Data Type: " + datatype);

эта строка должна печатать тип данных в консоли вашего браузера, когда происходят изменения.

Второй Я думаю, что лучше добавить имя к вашим маршрутам

Route::get('/lfwuser_addEngagementData', 'LfwUser\LfwDashboardController@getEngagementData')->name('my_route_name');

и в файле блейда в ajax части вы можете легко назвать его

url: "{{route('my_route_name')}}"

...