php - 你知道为什么会出现错误:GET 500 (Internal Server Error)吗?(Ajax 获取请求)
问题描述
我有以下代码视图列出存储在数据库中的所有会议存在的城市。
例如,如果数据库中有 2 个会议条目,一个包含城市 Newcastle,另一个包含城市 Leeds,它应该在此模态 Newcastle and Leeds 中显示 -
<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::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)您需要将从路由获取的变量 slug 传递给函数的构造函数。不需要请求,因为您没有对它做任何其他事情。
2)你已经在使用whereCity
,所以不要传入列名
3)DB::raw
真的只需要更复杂的查询或传入mysql函数
public function getConferencesOfCity($slug)
{
$conferences = Conference::whereCity($slug)->get();
return response()->json($conferences);
}
推荐阅读
- android - 如何使用来自 firebase 的值填充 listView
- angular - Angular,REST-API Json 对象,使用子对象访问特定数组
- android - lineSpacingExtra 不适用于 TextView
- javafx - 微调器中的 NumberFormatException
- django - 清除()后未删除 M2M 关系
- python-requests - 将 verify=False 传递给 post 时出现 ValueError 异常
- mysql - 如何将查询中的常量值列添加到另一个查询结果中?
- javascript - 从本地存储中获取星级和数据
- python - Python程序在运行时无法识别全局变量
- amazon-cloudwatch - 如何在 AWS Cloud Watch Logs Insights 中运行分组