gpt4 book ai didi

javascript - Laravel SortableJS AJAX-如何重新排列顺序

转载 作者:行者123 更新时间:2023-12-03 07:25:22 24 4
gpt4 key购买 nike

我刚刚在Laravel项目中实现了SortableJS,并希望重新排列某些元素的顺序。我有一个“块”列表,它们都有一个“Order”数据库字段,它是一个整数。我将基于“订单”字段的值以降序显示这些块。

现在,我想使用Ajax使用SortableJS更新这些值。我该怎么做?

目前,我有一个简单的 list

<div class="block-order-list">
@foreach($blocks as $block)
<div class="list-group-item"><i class="far fa-arrows handle mr-3"></i> {{$block->name}}</div>
@endforeach
</div>

然后像这样调用一个Ajax请求:
$('.block-order-list').sortable({
animation: 150,
handle: '.handle',
store: {
set: function (sortable) {
let order = sortable.toArray();
console.log(order);
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: '{{ route('change_order', ['url', $page->url]) }}',
type: 'POST',
data: order,
success: function(data){
console.log(data)
}
})
}
}
});

到我的PageController包含
 public function changeOrder($data)
{

return $data;
}

现在,请求仅返回一个字符串 url,我觉得很奇怪。在ajax请求的url中,我提供了一个名为URL的参数,该参数需要查找附加到此特定页面的块。我的图块数据库表如下所示

enter image description here

我该怎么做?

最佳答案

我想您必须在HTML列表中使用ID:

<div class="block-order-list">
@foreach($blocks as $block)
<div class="list-group-item" data-id="{{ $block->id }}>
<i class="far fa-arrows handle mr-3"></i> {{ $block->name }}
</div>
@endforeach
</div>

然后在您的JS中,构建一个ID => order的数组:
let order = {};
$('.list-group-item').each(function() {
order[$(this).data('id')] = $(this).index();
});

然后在您的ajax电话中:
 $.ajax({
url: '{{ route('change_order', ['url', $page->url]) }}',
type: 'POST',
data: {order: order},
success: function(data){
console.log(data)
}
})

在您的 Controller 中:
public function changeOrder(Request $request)
{
foreach($request->get('order') as $id => $order) {
Block::find($id)->update(['order' => $order]);
}
}

关于javascript - Laravel SortableJS AJAX-如何重新排列顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59515642/

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