我想做一个帐单结构,我可以选择一个客户端,下一个选择表单会显示客户端的所有项目,但出于某种原因,我遇到了麻烦。
这是我的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>');
});
});
});
});
有什么想法吗?非常感谢!
答案 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'])