gpt4 book ai didi

php - 用 ajax 填充 Laravel 中的表?

转载 作者:行者123 更新时间:2023-12-01 04:10:05 25 4
gpt4 key购买 nike

我有一个 Laravel 应用程序,在其中创建页面布局,向其中添加一个表格作为“内容”变量(几乎全部来 self 找到的教程)。这是 Controller 操作:

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>

但是问题来了:我有一个 jstree,用户可以在其中选择节点,触发 jQuery 方法:

$('#jstree2').on("changed.jstree", function (e, data) {
console.log(data.selected);
$.get("filter", { category: data.selected })
.done(function (resultdata) {
//Test only, this returns the data wanted in json, which I stringify just to display in test
alert("Data Loaded: " + JSON.stringify(resultdata));
});
});

jQuery 在 Controller 中调用此操作方法:

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 创建了一个漂亮的表格等,我只是希望能够让用户随意重新填充它,而无需刷新页面。

但我不知道该怎么做,除非在某种字符串返回值中煞费苦心地重新创建这个表,但这似乎不是一个好主意。

我希望有某种方法可以将返回值传递回 View 并让它重新加载表中的值,利用我在 php 变量“内容”中加载的相同“ subview ”,如上所述?

非常感谢任何帮助!

编辑:

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

[{"id":"1","title":"交通 AC 4494","created_by":"4","modified_by":null},{"id":"2","title":"安全第一 AC 4294","created_by":"3","modified_by":null},{"id":"3","title":"保修 AC 34066","created_by":"4", "modified_by":null}]

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

编辑3:

我通过在 jQuery 中创建表行来完成这项工作:

var trHTML = '';
$.each(resultdata, function (i, item) {
trHTML += '<tr><td>' + item.id + '</td><td>' + item.title + '</tr>';
});
$('#ajaxtable').html(trHTML);

但主要是我希望这可以更好地解释我的问题:这不是我想做的。我想要的只是创建一个部分 View ,然后使用 jquery 加载现成的 View :

像这样的局部 View :

<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>

我通过在 jquery 代码中创建并调用 Controller 中的新函数来对此进行测试:

   public function getTable()
{
$resources = Resource::all()->take(5);
return View::make('categories.results')->with('resources', $resources);
}

但是这不起作用。虽然它确实给了我该 View 的 html,但它是未经处理的。即,foreach 循环未解决,但仍然作为表中的代码存在。看图:

enter image description here

那么如何使用 jquery 代码加载这个 View 呢?在我看来,即使 jquery 创建表行有效,在 php 中执行 View ,然后用 jquery 加载它应该是更正确的方法......?

最佳答案

您研究过 Datatables jQuery 插件吗?实际上有一个很好的 Laravel 包可以帮助集成 Laravel 和 Datatables。 Laravel 包生成 json,您可以使用 Datables+AJAX 重新填充数据。可能正在检查...

https://github.com/Chumper/datatable http://datatables.net/

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

关于php - 用 ajax 填充 Laravel 中的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21617237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com