如何使用laravel 5.6中的ajax将数据从控制器传递到视图

时间:2018-06-06 14:25:18

标签: php jquery ajax database laravel

我的标签有简单的表格。

路线

route::resource('admin/tags','TagController');

控制器:

    public function index()
{
    $tags=Tag::latest()->paginate(5);
    return view('products.tag',compact('tags'));
}

查看:

@extends('admin.index')
@section('content')
 ...html code...
<table class="table">
  <thead>
   <tr>
     <th scope="col">#</th>
     <th scope="col">tag name</th>
     <th scope="col">tag slug</th>
     <th scope="col">description</th>
  </tr>
 </thead>
<tbody>
@foreach($tags as $tag)
 <tr>
  <th scope="row">{{$tag->id}}</th>
  <td>{{$tag->tag_name}}</td>
  <td>{{$tag->tag_slug}}</td>
  <td>@{{$tag->tag_description}}</td>
</tr>
@endforeach
</tbody>
</table>
  <div class="paging site-pagination">
     {{$tags->links()}}
 </div>
 ...html code...
  @endsection

现在,这段代码就像魅力一样,但我想从ajax获取数据,然后传递给我的视图。

我的ajax代码:

$(document).ready(() => {
   get_data()

function get_data() {
    $.ajax({
        type: 'GET',
        url: '/admin/tags',
        beforeSend: function () {
            console.log('before')
        },
        success: function (data , status , xhr){
            console.log(data);
            console.log(status );
            console.log(xhr);
        },
        complete: function (data) {
            console.log('complete')
        },
        error: function (data) {
            console.log('error')
        },
    });
}
 )}

嗯。现在我的成功功能是工作并获取我的HTML。 但我只想获得tags变量并将其传递给查看。

我改变了我的控制器:

//return view('admin.pages.products.tag',compact('tags'));
  return response()->json($tags);

现在我的标签视图是:

{
 "current_page": 1,
"data": [
{
 "id": 46,
 "tag_name": "EbTLzDikpS",
 "tag_slug": "mKXcpVOF3L",
 "tag_description": "05HMeVazYO",
},
  ...
{
 "id": 5,
 "tag_name": "T4uvmukgZA",
 "tag_slug": "fpWwimnnIk",
  "tag_description": "A0nfZ4POHR",
 }
 ],
"first_page_url": "http://127.0.0.1:8000/admin/tags?page=1",
"from": 1,
"last_page": 10,
"last_page_url": "http://127.0.0.1:8000/admin/tags?page=10",
"next_page_url": "http://127.0.0.1:8000/admin/tags?page=2",
"path": "http://127.0.0.1:8000/admin/tags",
"per_page": "5",
"prev_page_url": null,
"to": 5,
"total": 46
}

现在,即使我删除了我的ajax功能,我的视图也不会改变。

所以我再次改变我的控制器:

return view ('admin.pages.products.tag', compact('tags'))->render();

仍然无效。

1 个答案:

答案 0 :(得分:0)

您忘记为路线指定function(method)的名称:

route::resource('admin/tags','TagController@index');

您的代码看起来像API,但如果您在route / web.php中,则可以使用api/admin/tags

如果问题仍然存在,请更改功能:

&#13;
&#13;
 public function index()
{
    $tags=Tag::latest()->paginate(5);
    return response()->json($tags);
}
&#13;
&#13;
&#13;