从Laravel中的Javascript检查数据库中的值

时间:2017-07-14 22:00:11

标签: javascript laravel-5 eloquent

我正在尝试检查<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

谁能告诉我我做错了什么

1 个答案:

答案 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;