Я создаю вложенный список с данными из базы данных. В этом списке я использую JQuery UI Drag
эффект. Что мне нужно сделать, это когда перетаскивание закончится, он обновит базу данных.
Список содержит имя профессора и его удостоверение личности, а также подсписок с его классами, например:
Джон учит математике & физику, Дуэйн преподает английский.
Джон
* Физика
* Math
Дуэйн
*Английский
Допустим, я хочу дать урок математики Дуэйну. Поэтому я перетащу Матха из Джона и добавлю его в подсписок Дуэйна. Работает нормально.
Что я не могу сделать, так это сделать обновление базы данных, потому что Джон больше не учит математике, а Джон собирается преподавать его. Поэтому мне нужно сделать там обновление или удалить + вставить.
Obs: я использую Laravel
Вот мой код:
@extends('app')
@section('assets')
<script type="text/javascript" src="{{ URL::to('/js/jquery.mjs.nestedSortable.js') }}"></script>
@stop
@section('content')
<ol>
@foreach($professores as $prof)
<li data-id=" {{ $prof->id }}">
{{ $prof->nome }}
<ol class="list-disc">
@foreach($prof->disc as $disc)
<li data-id="{{ $disc->id }}">{{ $disc->nome }}</li>
@endforeach
</ol>
</li>
@endforeach
</ol>
<script type="text/javascript">
$(function(){
var old_teacher;
$('.list-disc').sortable({
connectWith: '.list-disc',
start: function (event, ui){
old_teacher = ui.item.parent().parent().attr('data-id');
},
stop: function (event, ui){
$.ajax({
type: "POST",
url: '{{ URL::to("/professor") }}',
data: {disc: ui.item.attr('data-id'), professor: ui.item.parent().parent().attr('data-id'), old: old_teacher},
success: function(data){
console.log(data);
}
});
}
});
})
</script>
@stop
С этим текущим кодом, когда я бросаю предмет, я получаю:
Внутренняя ошибка сервера (500)
ОБНОВИТЬ
Файл маршрута:
Route::post('professor', [
'uses' => 'ProfessorController@postProfessorList'
]);
Файл контроллера:
public function postProfessorList()
{
Professor::submit(Input::post('disciplina'), input::post('professor'), input::post('old'));
}
Файл журнала: обновление
local.ERROR: исключение ‘Symfony \ Component \ Debug \ Exception \ FatalErrorException’ с сообщением ‘Вызов неопределенного метода Illuminate \ Http \ Request :: post ()’ в F: \ PathToProject \ vendor \ laravel \ framework \ src \ Illuminate \ Поддержка \ Фасады \ Facade.php: 210
Внутренняя ошибка сервера (500) означает, что с вашим кодом на стороне сервера (laravel) что-то не так.
Можете ли вы предоставить нам код, который используется в POST: / Professor?
РЕДАКТИРОВАТЬ
Возможно, вы захотите проверить свои журналы в приложении / хранилище или хранилище / (в зависимости от версии laravel). Они должны дать вам лучшее описание возникшей ошибки.
Кроме того, вы должны заменить Input::post('...')
с Input::get('...')
laravel автоматически заботится о переменных $ _GET и $ _POST.
РЕДАКТИРОВАТЬ 2
Полученная ошибка связана с защитой CSRF от Laravels.
Вам нужно будет установить токен csrf в вашем ajax-запросе так:
data: {disc: ....., _token: '{{csrf_token()}}' }
Других решений пока нет …