【发布时间】:2016-10-13 13:18:51
【问题描述】:
我想制作一个搜索程序来从庞大的数据表中获取数据。用户可以从到列,代码/代码和名称搜索数据(每个数据有1个代码/代码)。如果用户单击搜索按钮,使用 AJAX 向服务器发送请求,然后客户端获取结果并将其显示在表格中。
这里是我的观点:
<div class="modal-body">
<div class="form-inline form-inline" style="margin-bottom: 10px">
{!! Form::select('jenis-select',['Kode BU','Nama BU'],null,['class' => 'form-control']) !!}
{!! Form::text('value-select','',['class' => 'form-control']) !!}
<button type="button" id="cari-bu" class="btn btn-default">Cari</button>
</div>
<table class="table">
<thead>
<tr>
<th>Kode BU</th>
<th>Nama BU</th>
</tr>
</thead>
<tbody id="hasil-cari"></tbody>
</table>
</div>
搜索结果将显示在<tbody>,属性为id="hasil-cari"
这是我的 ajax :
$(document).ready(function () {
$.ajaxSetup({
headers: {'X-CSRF-Token': $('meta[name=_token]').attr('content')}
});
$('#cari-bu').click(function () {
$.ajax({
url: 'select_bu',
type: 'post',
data: {'_token': $('input[name=_token]').val(),
'jenis': $('select[name=jenis-select]').val(),
'value': $('input[name=value-select]').val()
},
success: function (data) {
$('#hasil-cari').html(data);
}
});
});
});
这是处理 AJAX 的控制器:
public function postSelect() {
if (Request::ajax()) {
$input = Input::all();
if ($input['jenis'] == 0) {
$hasil = Daftarbu::where('kodebu', $input['value'])->get();
} elseif ($input['jenis'] == 1) {
$hasil = Daftarbu::where('namabu','LIKE','%'.$input['value'].'%')->get();
}
$hasilAkh = '<tr>';
foreach ($hasil as $dHasil){
$hasilAkh .= '<td>'.$dHasil->kodebu.'</td><td>'.$dHasil->namabu.'</td>';
}
$hasilAkh .= '</tr>';
return $hasilAkh;
}
}
我的路线:
Route::post('select_bu','Pelayanan@postSelect');
我已将此meta 放在<head> 标记处
<meta name="_token" content="{!! csrf_token() !!}"/>
使用该代码,我不断收到 500 内部错误。谁能找到问题?
【问题讨论】:
-
把token作为输入隐藏字段
-
把这个和你的表格一起{{csrf_field}}
-
在您的 ajax 中,您的 URL 定义为
url: 'select_bu'。你在使用命名路由吗?如果此 Javascript 在页面中回显,您可能需要使用类似url: '{!! route('url_to _submit to') !!}',的内容。有关命名路线的更多信息:laravel.com/docs/5.2/routing#named-routes -
@JustinOriginBroadband 使用命名路由仍然相同
-
您是否尝试将 {{csrf_field}} 放入表单并删除元 csrf_token?结果如何?