在刀片视图中检索JSON响应 - Laravel 5.3

时间:2017-02-09 21:32:57

标签: php json ajax laravel

我想做一个帐单结构,我可以选择一个客户端,下一个选择表单会显示客户端的所有项目,但出于某种原因,我遇到了麻烦。

这是我的route.php

Route::resource('bills', 'BillsController');
Route::get('bills/items','BillsController@items');

这是我的BillsController

private function items($request) {
    try {
        if ($request) {
            $id = $request->client_id;
            $items = Item::where('client_id', $id)->get()->pluck('code', 'id');

            return redirect()->json($items);
        } else {
            \Session::flash('error_message', 'Ups! Hemos tenido un error.');
            return redirect()->back();
        }
    } catch (Exception $e) {
        \Session::flash('error_message', 'Ups! Hemos tenido un error.');
            return redirect()->back();
    }
}

这是我的刀片视图中的脚本:

<script>
$(document).ready(function() {

    $('#clients').change(function() {
        var $client_id = $('#clients').val();
        console.log($client_id);
        var $url = '{{ url('MyAdmin/bills/items') }}';
        console.log($url);
        $.getJSON($url, {'client_id': $client_id}, function(resp) {
            console.log(resp); //For some reason here the "resp" is not working
            $.each(resp, function(key, answer) {
                $('#items').append('<option value="'+answer.id+'">'+answer.code+'</option>');
            });
        });
    });
});

有什么想法吗?非常感谢!

1 个答案:

答案 0 :(得分:0)

这是因为它实际进入} catch (\Exception $e)。但是你也没有在这里返回JSON响应。你正在重定向。

问题是redirect()对象不包含->json()方法,但response()对象包含return response()->json($items); 方法。所以改变它:

422

此外,在您的错误处理程序中,在响应时返回.error()错误代码,因此它会触发您的承诺上的return response(422)->json([$e->getMessage()]);

angular.module('app', ['ngRoute', 'smart-table'])