Laravel 5.2 - 新申请
我刚回到laravel,我在ajax帖子上遇到了麻烦。
基本上,当您重新排序列表时,调用ajax来更改顺序并将其保存在数据库中。我一直在研究,但似乎没有人帮助我..
到目前为止我有什么......
html / blade.php代码:
<ul class="sortable">
@foreach ($pages as $page)
<li class="ui-state-default" data-id="{{ $page->id }}">{{ $page->name }}</li>
@endforeach
</ul>
的Ajax
$(function() {
$('.sortable').sortable().bind('sortupdate', function(e, ui) {
var id = $('ul.sortable li').map(function(){
return $(this).data("id");
}).get();
$.ajax({
method: 'post',
url: '/abc',
data: {
id: id,
_token: token
},
dataType: 'json',
error: function (data) {
console.log('Error:', data);
},
success: function (msg) {
alert(msg);
}
});
});
});
routes.php文件
Route::post('abc', 'HomeController@SomeFunction');
控制器
public function SomeFunction(Request $request){
$id = $request->input('id');
$i = 1;
foreach($id as $val) {
$page = Page::where('id', (int)$val)->first();
$page->order = $i;
$page->save();
$i++;
}
}
更新:
感谢上面所有人的支持,我已经提出了所有人们帮助我更好地编码并解决问题的建议......我还发现,当我将$ val转换为int时,它正在更新中数据库。谢谢
答案 0 :(得分:1)
如果你想在laravel中使用jquery ajax,你需要在ajax请求数据中传递laravel标记!
data: {
id: 'id', _token: token
},
您不需要在html和任何ajax设置中使用元标记的两个快速提示。您需要做的唯一事情是在视图中创建一个名为例如令牌 var token =&#39; {{Session :: token()}}&#39; 的变量,然后将它传递给ajax数据。另一个提示是,您可以在视图中为您的后期路线制作变量,而不是使用静态网址var url =&#39; {{Route(&#34; name&#34;)}}&#39;。
答案 1 :(得分:0)
您在控制器中忘记了您的请求 确保您使用
use Request
然后将控制器代码编辑为此格式
public function SomeFunction(Request $request){
$id = $request->input('id');
$i = 1;
foreach($id as $val) {
$page = Page::where('id', $val)->first();
$page->order = $i;
$page->save();
$i++;
}
}