[英]Get Internal Server Error 500 using this code on laravel 5.1
我總是會收到內部服務器錯誤,我一直在尋找解決方案,但無法獲得解決問題的最佳解決方案。 如何解決此問題? 內部服務器錯誤500。她是我的代碼
路由器:
Route::get('getdata', function()
{
$term = Str::lower(Input::get('term'));
$data = array(
'R' => 'Red',
'O' => 'Orange',
'Y' => 'Yellow',
'G' => 'Green',
'B' => 'Blue',
'I' => 'Indigo',
'V' => 'Violet',
);
$return_array = array();
foreach ($data as $k => $v) {
if (strpos(Str::lower($v), $term) !== FALSE) {
$return_array[] = array('value' => $v, 'id' =>$k);
}
}
return Response::json($return_array);
});
我的刀片:
<?= Form::open() ?>
<?= Form::label('auto', 'Find a color: ') ?>
<?= Form::text('auto', '', array('id' => 'auto'))?>
<br>
<?= Form::label('response', 'Our color key: ') ?>
<?= Form::text('response', '', array('id' =>'response', 'disabled' => 'disabled')) ?>
<?= Form::close() ?>
<script type="text/javascript">
$(function() {
$("#auto").autocomplete({
source: "getdata",
minLength: 1,
select: function( event, ui ) {
$('#response').val(ui.item.id);
}
});
});
</script>
Laravel 5.1使用一種稱為csrf的保護措施來保護站點免受跨站點請求偽造(CSRF)的影響。對於任何形式的POST到服務器的表單值,Laravel都會放置一個包含有效令牌的隱藏輸入字段。 laravel為每個應用程序生成此令牌。 像這樣:
<input name="_token" type="hidden" value="oEUWsddRCEER123btOyuiZdATJANP83uERSz">
沒有此令牌的任何請求都將被視為偽造,並且laravel將拒絕該請求並為他們提供內部服務器錯誤。
因此,要發出有效的ajax請求,您需要指定應用程序的有效令牌。 示例(取自laravel.io):
<meta name="csrf_token" content="{{ csrf_token() }}
然后在ajax調用期間,對ajax調用進行一些自定義,以包括令牌數據:我尚未測試此代碼。 但是您會得到一些想法:
<script type="text/javascript">
$(function() {
$("#auto").autocomplete({
source: function (request, response) {
$.ajax({
type: "POST",
beforeSend: function (xhr) {
var token = $('meta[name="csrf_token"]').attr('content');
if (token) {
return xhr.setRequestHeader('X-CSRF-TOKEN', token);
}
},
url:"getdata",
data: {},
success: response,
}),
select: function( event, ui ) {
$('#response').val(ui.item.id);
}
});
});
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.