Laravel 5.2 - 新应用程序
我刚刚回到 Laravel,并且在处理 ajax post 时遇到了麻烦。
基本上,当您对列表重新排序时,它会调用 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);
}
});
});
});
路由.php
Route::post('abc', 'HomeController@SomeFunction');
Controller
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 时,它正在更新数据库。谢谢你
最佳答案
如果你想在 Laravel 中使用 jquery ajax,你需要在 ajax 请求数据中传递 laravel token !
data: {
id: 'id', _token: token
},
两个快速提示,您无需在 html 和任何 ajax 设置中使用元标记。您唯一需要做的就是在 View 中创建一个名为 token var token = '{{Session::token()}}' 的变量,然后将其传递到 ajax 数据中。其他提示是,您可以在 View 中为帖子路由创建一个变量 var url = '{{Route("name")}}',而不是使用静态 url。
关于javascript - Laravel 5.2 中 Ajax 返回 500 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37767184/