Знаете ли вы, почему появляется ошибка: GET 500 (Internal Server Error)?(Ajax получить запрос) - PullRequest
0 голосов
/ 15 мая 2018

У меня следующий код для просмотра списка городов, которые существуют для всех конференций, хранящихся в базе данных.

Например, если в базе данных есть 2 записи конференции, и у одной есть город Ньюкасл, у другой - город Лидс, который он должен показывать в этом модальном Ньюкасле и Лидсе -

<ul class="modal-list">
    @foreach($cities as $city)
        <li class="col-lg-4 col-md-6 col-sm-12">
            <a  class="" name="city" id="{{$city}}">{{$city}}</a>
        </li>
    @endforeach
</ul>

Когда пользователь нажимает в каком-то городе, появляется эта ошибка:

jquery.min.js:4 GET http://proj.test/conferences/where/city/Newcastle 500 (Internal Server Error)

Когда пользователь щелкает в каком-либо городе, выполняется запрос ajax, чтобы получить конференции, столбец которых "город" равен городу, по которому пользователь щелкнул:

$("a[name='city']").on('click', function(){


                var city = $(this).attr("id");


                $.ajax({

                    url: '{{ route('city.conferences',null) }}/' + city,
                    type: 'GET',
                    success:function(result){
                        console.log(result)

                        alert(result);
                        $('#conferences').empty();
                        var newConferences='';
                        var placeholder = "{{route('conferences.show', ['id' => '1', 'slug' => 'demo-slug'])}}";
                        $.each(result, function(index, conference) {
                            var url = placeholder.replace(1, conference.id).replace('demo-slug', conference.slug);

                            newEvens += '<div class="col-12 col-sm-6 col-lg-4 col-xl-3 mb-4">\n' +
                                '                        <div class="card box-shaddow">\n' +
                                '                            <img class="card-img-top" src='+ conference.image +' alt="Card image cap">\n' +
                                '                            <div class="card-body">\n' +
                                '                                <p class="font-size-sm"><i class="fa fa-calendar" aria-hidden="true"></i>  '+conference.start_date+'</p>\n' +
                                '                                <h5 class="card-title h6 font-weight-bold text-heading-blue">'+conference.name+'</h5>\n' +
                                '                                <p class="card-text font-size-sm"><i class="fa fa-map-marker" aria-hidden="true"></i> '+conference.place+', '+conference.city+'</p>\n' +
                                '                            </div>\n' +
                                '                           <div class="card-footer d-flex justify-content-between align-items-center">\n' +
                                '                                 <a href="' + url + '" class="btn btn-primary text-white">More</a>' +
                                ' <span class="font-weight-bold font-size-sm"></span>\n'
                            '                           </div>\n' +
                            '                    </div>';
                        });

                        $('#conferences').html(newConferences);

                    },
                    error: function(error) {

                        console.log(error.status)
                    }

                });

            });

Маршрут:

ConferenceController getConferencesOfCity route:

Route::get('conferences/where/city/{slug}','ConferenceController@getConferencesOfCity')->name('city.conferences');

ConferenceController метод getConferencesOfCity:

public function getConferencesOfCity(Request $request)
    {
        $conferences = Conference::whereCity('city', DB::raw($request->slug))->get();

        return response()->json($conferences);
    }

Знаете ли вы, почему я вижу ошибку?

1 Ответ

0 голосов
/ 15 мая 2018

Здесь есть несколько вещей, которые нужно изменить:

1) Вам нужно передать переменную slug, которую вы получаете из маршрута, в конструктор функции.Запрос не нужен, так как вы больше ничего с ним не делаете.

2) Вы уже используете whereCity, поэтому не передавайте имя столбца

3)DB::raw действительно требуется только для более сложных запросов или передачи в функции mysql

public function getConferencesOfCity($slug)
    {
        $conferences = Conference::whereCity($slug)->get();

        return response()->json($conferences);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...