laravel ajax得到什么并没有返回任何下拉json

时间:2015-02-03 03:53:34

标签: jquery ajax laravel get return

我是一个新手学习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字段。

有人可以帮忙吗? 感谢

1 个答案:

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

我希望这有帮助。

祝你好运。