所以我想做的是通过AJAX发送物品的新位置,当我“放下”物品时,所有这一切都会发生。 这就是这些“ div”,这是我的“清单”,这些div中有图像,当我移动它时,它应该进行AJAX调用。我在Chrome控制台中仅收到500(内部服务器错误)
$index=1;
foreach ($inventories as $inventory) {
if($inventory->id_w==null){
echo '<div id="policko'.$index.'" class="inventar" data-hasPicture="false" ondrop="drop(event)" ondragover="allowDrop(event)"></div>';
$index++;
}else{
echo '<div id="policko'.$index.'" class="inventar" data-hasPicture="true" ondrop="drop(event)" ondragover="allowDrop(event)">
<img src="/images/coin.png" class="obrazek" data-position='.$index.' id='.$inventory->position.' draggable="true" ondragstart="drag(event)">
</div>';
$index++;
}
}
然后我将AJAX设置称为脚本
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
最后,还有更新库存的功能
function updateInventory(itemId,position)
{
var characterInventoryID={!! json_encode($character->id) !!};
$.ajax({
url: '/updateInventory',
method: 'PUT',
data: { itemID: itemID,characterInventoryID:characterInventoryID, position:position, _token: '{{csrf_token()}}' },
dataType: 'json'
});
}
路线
Route::put('/updateInventory','InventoryController@updateInventory');
还有控制器功能,在这里找到具有当前位置和旧位置的行,并进行切换
public function updateInventory(Request $request){
if(request()->ajax()){
$pos=$request->position;
$idItem=$request->itemID;
$charID=$request->characterInventoryID;
$where = ['id_c' => $charID, 'position' => $pos];
$whereOld = ['id_c' => $charID, 'position' => $idItem];
$idi = Inventory::where($where)->first()->id;
$idiOld = Inventory::where($whereOld)->first()->id;
$i=Inventory::find($idi);
$iOld=Inventory::find($idiOld);
$iOld->position=$i->position;
$i->position=$pos;
$i->save();
$iOld->save();
}
}
希望这就是全部
答案 0 :(得分:0)
ajax没有方法选项,您可以将_method作为数据传递 尝试以下代码:
function updateInventory(itemId,position)
{
var characterInventoryID={!! json_encode($character->id) !!};
$.ajax({
url: '/updateInventory',
type: 'POST',
data: { _method:'PUT', itemID: itemID,characterInventoryID:characterInventoryID, position:position, _token: '{{csrf_token()}}' },
dataType: 'json'
});
}
答案 1 :(得分:0)
好吧,问题是我的位置为空,因此在控制器中找不到任何东西,这就是错误。