Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax调用Laravel Controller后显示JSON而不是Datatable_Ajax_Laravel_Datatables - Fatal编程技术网

Ajax调用Laravel Controller后显示JSON而不是Datatable

Ajax调用Laravel Controller后显示JSON而不是Datatable,ajax,laravel,datatables,Ajax,Laravel,Datatables,我对ajax和json相当陌生,非常感谢您的帮助。 我正在对Laravel控制器进行Ajax调用,以从名为“subjects”的数据库表返回一些字段,并在Laravel视图的DataTable中显示它们。问题是,当我打开视图时,看到的是JSON而不是Datatable 以下是视图主题/索引中返回的内容: {"draw":0,"recordsTotal":8,"recordsFiltered":8,"data":[{"id":"1","name":"Biology"},{"id":"3","nam

我对ajax和json相当陌生,非常感谢您的帮助。 我正在对Laravel控制器进行Ajax调用,以从名为“subjects”的数据库表返回一些字段,并在Laravel视图的DataTable中显示它们。问题是,当我打开视图时,看到的是JSON而不是Datatable

以下是视图主题/索引中返回的内容:

{"draw":0,"recordsTotal":8,"recordsFiltered":8,"data":[{"id":"1","name":"Biology"},{"id":"3","name":"English Language"},{"id":"4","name":"Physics"},{"id":"5","name":"Chemistry"},{"id":"6","name":"Mathematics"},{"id":"7","name":"Mathematics"},{"id":"8","name":"English Language"},{"id":"9","name":"French"}],"queries":[{"query":"select count(*) as aggregate from (select '1' as `row_count` from `subjects`) count_row_table","bindings":[],"time":4.65},{"query":"select `id`, `name` from `subjects`","bindings":[],"time":0.41}],"input":[]}
class SubjectsController extends Controller
{
    public function index()
    {
        $subjects = Subject::select('id', 'name');
        return Datatables::of($subjects)->make(true);
   }
}
$('#subjects_table').DataTable({
      "processing": true,
      "serverSide": true,
      "ajax": "{{route('subjects.index')}}",
      "columns":[
          {"data": "id"},
          {"data": "name"}
      ]
});
Route::get('subjects/', 'SubjectsController@index')->name('subjects.index');
以下是视图/主题/索引中的HTML

<table id="subjects_table" class="table table-bordered" style="width:100%">
    <thead>
            <tr>
                <th>Id</th>
                <th>Subject</th>
            </tr>
                </thead>
                <tbody>

                </tbody>
        </table>
下面是进行Ajax调用的代码:

{"draw":0,"recordsTotal":8,"recordsFiltered":8,"data":[{"id":"1","name":"Biology"},{"id":"3","name":"English Language"},{"id":"4","name":"Physics"},{"id":"5","name":"Chemistry"},{"id":"6","name":"Mathematics"},{"id":"7","name":"Mathematics"},{"id":"8","name":"English Language"},{"id":"9","name":"French"}],"queries":[{"query":"select count(*) as aggregate from (select '1' as `row_count` from `subjects`) count_row_table","bindings":[],"time":4.65},{"query":"select `id`, `name` from `subjects`","bindings":[],"time":0.41}],"input":[]}
class SubjectsController extends Controller
{
    public function index()
    {
        $subjects = Subject::select('id', 'name');
        return Datatables::of($subjects)->make(true);
   }
}
$('#subjects_table').DataTable({
      "processing": true,
      "serverSide": true,
      "ajax": "{{route('subjects.index')}}",
      "columns":[
          {"data": "id"},
          {"data": "name"}
      ]
});
Route::get('subjects/', 'SubjectsController@index')->name('subjects.index');
以下是web.php中的路由定义:

{"draw":0,"recordsTotal":8,"recordsFiltered":8,"data":[{"id":"1","name":"Biology"},{"id":"3","name":"English Language"},{"id":"4","name":"Physics"},{"id":"5","name":"Chemistry"},{"id":"6","name":"Mathematics"},{"id":"7","name":"Mathematics"},{"id":"8","name":"English Language"},{"id":"9","name":"French"}],"queries":[{"query":"select count(*) as aggregate from (select '1' as `row_count` from `subjects`) count_row_table","bindings":[],"time":4.65},{"query":"select `id`, `name` from `subjects`","bindings":[],"time":0.41}],"input":[]}
class SubjectsController extends Controller
{
    public function index()
    {
        $subjects = Subject::select('id', 'name');
        return Datatables::of($subjects)->make(true);
   }
}
$('#subjects_table').DataTable({
      "processing": true,
      "serverSide": true,
      "ajax": "{{route('subjects.index')}}",
      "columns":[
          {"data": "id"},
          {"data": "name"}
      ]
});
Route::get('subjects/', 'SubjectsController@index')->name('subjects.index');
非常感谢您提供的任何帮助

您应该尝试以下方法:

路线

主题控制器

看法


身份证件
主题
$(文档).ready(函数(){
$(“#主题#表”)。数据表({
处理:对,
服务器端:是的,
ajax:“{route('subjects.get')}}”,
栏目:[
{数据:'id',名称:'id'},
{data:'name',name:'name'},
{数据:'email',名称:'email'},
]
});
});

非常感谢Saurabh,它成功了。我非常感激这是否意味着这不能用一条路由来完成?@IsoB:不,你可以为datatable 1创建两条路由。用于显示视图2。用于获取数据表data@IsoB:很高兴为您提供帮助,如果我的回答对您有用,请接受我的回答。我如何“接受”您的回答?有没有我应该点击的按钮或东西?找不到any@IsoB感谢您的回复。以下链接应为如何在StackOverflow(即)中接受答案的指南