我是一个新手学习laravel 现在我想制作一个由书籍标题填充的下拉菜单,如果我选择标题,其他信息将会出现 我在sales.create视图
上做了这个下拉列表这是我的销售创建刀片
<div class="form-group">
{{ Form::select('books[]',$books,null,['class' => 'form-control input-sm','name' => 'book_title', 'id' => 'book_title'])}}
</div>
<script>
$('#book_title').on('change', function(e){
e.preventDefault();
var book_id = e.target.value;
//ajax
$.get('ajax-book_data?book_id=' + book_id, function(data){
//success data
console.log(data);
});
});
</script>
这是我的路线
Route::resource('books','BooksController');
Route::resource('sales','SalesController');
Route::get('/sales/create',function(){
$books = [];
foreach (Book::all() as $book):
$books[$book->id] = $book->title;
endforeach;
return View::make('sales.create')->with('books',$books);
});
Route::get('/ajax-book_data', function(){
$book_id = Input::get('book_id');
$book_data = Book::where('id', '=', $book_id)->get();
var_dump($book_id);
var_dump($book_data);
return Respone::json($book_data);
});
在桌子上&#39;书&#39; 我有id,title,author_id,publisher_id字段。
有人可以帮忙吗? 感谢
答案 0 :(得分:0)
这是一个例子(如果我的问题是对的):
我假设您使用这行代码:
return View::make('sales.create')->with('books',$books);
您可以在视图中执行以下操作:
<ul>
@foreach($books as $listBook)
<li class="ajaxUse">
<a book-id="{{ $listBook->id }}">{{ $listBook->title }}</a>
</li>
@endforeach
</ul>
请注意,我在&#34; <a>
&#34;添加了一个属性。标记&#34; book-id
&#34;它将当前图书的ID保存在&#34; <li>
&#34;中。我们使用两者来在用户点击后检索值。
这是ajax:
Jquery.js需要。
$('ajaxUse a').click(function(event){
event.preventDefault();
var bookId = $(this).attr("book-id");
$.ajax({
type: "POST",
url: "{{ URL::route('getPostBookDetail') }}",
data: {currentBookId : bookId},
cache: false,
dataType: "json",
success : function(data){
if(data){
alert("It's working");
}
}
})
});
然后在你的routes.php中你可以得到这样的东西:
Route::post('/book-detail', array( 'as' => 'getPostBookDetail','uses' => 'UserController@getPostBook'));
然后最后在你的控制器(即:UserController.php)中你将拥有:
public function getPostBook(){
$bookId = Input::get('currentBookId'); //From ajax post
$getDetails = Book::where('id', $bookId)->first();
//Json data to return to ajax call
$response = array('status' => 'success', 'msg' => 'You got book details successfully');
if(count($getDetails)){
return Response::json($response);
}
}
我希望这有帮助。
祝你好运。