Php 用ajax在Laravel中填充表?

Php 用ajax在Laravel中填充表?,php,jquery,ajax,laravel-4,Php,Jquery,Ajax,Laravel 4,我有一个Laravel应用程序,我在其中创建了一个页面布局,并将一个表作为“内容”变量添加到其中(几乎所有内容都来自我找到的教程)。以下是控制器操作: public function getMain() { $js_config = Category::all(); $resources = Resource::all()->take(100); $this->layout->content = View::make('categories.show')-

我有一个Laravel应用程序,我在其中创建了一个页面布局,并将一个表作为“内容”变量添加到其中(几乎所有内容都来自我找到的教程)。以下是控制器操作:

public function getMain() {
    $js_config = Category::all();
    $resources = Resource::all()->take(100);
   $this->layout->content = View::make('categories.show')->with('js_config', $js_config)->with('resources', $resources);
}
这将使用主布局模板,并使用内容变量插入此表:

<table class="table table-striped table-bordered">
    <thead>
        <tr>
            <td>ID</td>
            <td>Name</td>
        </tr>
    </thead>
    <tbody>
    @foreach($resources as $key => $value)
        <tr>
            <td>{{ $value->id }}</td>
            <td>{{ $value->title }}</td>

        </tr>
    @endforeach
    </tbody>
</table>
jQuery在控制器中调用此操作方法:

public function getFilter()
  {
      $input = Input::get('category.0');

      $categories = Category::find($input);


      //category is the name from the model below
      return Response::json(array(
          'error' => false,
          'category' => $categories->toArray()),
          200
      );
  }
(之所以有一个数组作为输入,是因为我最终希望能够允许在树中拾取多个节点)

此操作正确地从数据库获取数据,并将其作为json返回。作为测试,上面jQuery中的回调此时会发出警告

当然,我真正想做的是重新填充桌子。现在,正如您所看到的,我已经使用Bootstrap创建了一个漂亮的表,我只希望能够让用户随意重新填充它,而无需刷新页面

但我不知道怎么做,除非用某种字符串返回值费力地重新创建这个表,但这似乎不是一个好主意

我希望有某种方法将返回值传递回视图,并让它重新加载表中的值,使用与我在php变量“content”中加载的相同的“子视图”,如上所述

非常感谢您的帮助

编辑:

根据要求,这里有一个json示例(取自浏览器控制台输出,它实际上不是categories表,而是相同的格式):

[{“id”:“1”,“标题”:“运输AC 4494”,“创建人”:“4”,“修改人”:null},{“id”:“2”,“标题”:“安全第一AC 4294”,“创建人”:“3”,“修改人”:null},{“id”:“3”,“标题”:“保修AC 34066”,“创建人”:“4”,“修改人”:null}]

编辑2(刚刚意识到在之前的json编辑中,控制器有一些垃圾,所以我现在将其更改为更干净的示例)

编辑3:

我通过在jQuery中创建表行实现了这一点:

var trHTML = '';
                $.each(resultdata, function (i, item) {
                    trHTML += '<tr><td>' + item.id + '</td><td>' + item.title + '</tr>';
                });
                $('#ajaxtable').html(trHTML);
但它不起作用。虽然它确实为我提供了该视图的html,但它是未经处理的。也就是说,foreach循环没有解析,但仍然作为代码存在于表中。如图所示:


那么如何用jquery代码加载这个视图呢?我觉得,即使jquery创建表行有效,用php创建视图,然后用jquery加载视图应该是更正确的方法…?

您查看过Datatables jquery插件吗?实际上,Laravel有一个很好的包,可以帮助集成Laravel和Datatables。Laravel包生成json,您可以使用Datables+AJAX重新填充数据。可能正在办理退房手续


否则,您只需要使用AJAX来重新填充表。

正如Sirago所回答的,使用jQuery Datatables是以AJAX方式将数据加载到表中的一个好选项

除了Sirago所建议的,这里还有另一个很棒的Laravel4包,它专门用于从服务器端生成JSON数据


但除了服务器端配置(修改composer.json、config/app.php等文件),您还需要使用Javascript编写代码,同时利用数据表。

恐怕我需要更多的信息,我对Ajax和Laravel都不是那么友好,我正在努力学习。我查看了这个插件,但不知道如何将它应用到我上面描述的案例中。另外,您的第二个建议也可以,但这正是我的问题所在:我到底应该如何使用AJAX重新填充表?您可以发布一个json示例吗?
var trHTML = '';
                $.each(resultdata, function (i, item) {
                    trHTML += '<tr><td>' + item.id + '</td><td>' + item.title + '</tr>';
                });
                $('#ajaxtable').html(trHTML);
<table class="table table-striped table-bordered" id="resultstable">
    <thead>
        <tr>
            <td>ID</td>
            <td>Name</td>
        </tr>
    </thead>
    <tbody id="ajaxtable">
    @foreach($resources as $key => $value)
        <tr>
            <td>{{ $value->id }}</td>
            <td>{{ $value->title }}</td>
        </tr>
    @endforeach
    </tbody>
</table>
   public function getTable()
    {
        $resources = Resource::all()->take(5);
        return View::make('categories.results')->with('resources', $resources);
    }