поэтому я пытаюсь отправить новую позицию предметов через AJAX, и все это должно произойти, когда я «уронил» предмет.Так что это мой «инвентарь», это div, и у меня есть изображения в этих div, когда я перемещаю его, он должен сделать вызов AJAX.Я получаю только 500 (Внутренняя ошибка сервера) в консоли Chrome
$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();
}
}
Надеюсь, что этоэто все