我正在尝试检查<select>
下拉列表中选择的值,当我弄清楚它是如何工作的时候我想根据结果隐藏div。
的Javascript
<script>
e = document.getElementById("category_name");
e.addEventListener('change', checkDatabase);
function checkDatabase(y) {
var item = e.options[e.selectedIndex].text;
$.post('http://127.0.0.1:8000/categories/check',
{
_token: $('meta[name=csrf-token]').attr('content'),
data: {
check: item
}}
)
.done(function (data) {
alert(data);
})
.fail(function () {
console.log('ERROR');
});
}
</script>
路线
Route::post('categories/check', ['uses' => 'CategoryController@check', 'as' => 'categories.check']);
类别控制器
public function check(Request $request){
$cal = Category::find($request->input('check'));
return $cal->calibrated;
}
我一直试图让这个工作几个小时,但一直得到这个错误
POST http://127.0.0.1:8000/categories/check 500(内部服务器错误) ERROR
谁能告诉我我做错了什么
答案 0 :(得分:0)
您应该在浏览器检查器的网络标签中查看 storage / logs / laravel.log 文件或响应预览,以了解有关错误的更多信息,但目前为止我可以说,这可能是 4 事情的组合:
1 .- 最明显的一点是您通过Javascript发送(data: { check: item }
),(您可以使用check:item
而不将其封闭在数据对象)
但是您要在控制器('check'
)
$request->input('check')
如果不重写你的javascript函数,它应该可以工作,如果你将值恢复为
$request->input('data')['check']
2 .- 请确保您的表ID是您正在重新获取的值,如果没有,请改为使用:
$cal = Category::where('search_term_field_in_your_table','like',"%$request->input('data')['check']%")->first();
3 .- 请务必在视图中显示您的csrf-token元标记
<meta name="csrf-token" content="{{ csrf_token() }}">
4 .- 请确保在Controller文件顶部使用“请求”行
use Illuminate\Http\Request;