Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Не понемаю почему не получается передать запрос в контроллер средствами AJAX
Цель нудно изменить значение $article->public на 0 (по дефолту 1)
Делаю так
HTML:
<meta name="csrf-token" content="{!! csrf_token() !!}" />
<span id="timer" class="uk-badge">somedata</span><button type="button" title="Изменить" class="change">Изменить</button>
<input type="hidden" id="item_id" value="{{$item->id}}"/>
JS:
$('.change').click(function(){
span=$(this).parent();
item_id=$("#item_id").val();
$.ajax({
url: '/change',
method: 'PUT',
data: {'id': item_id, 'public' : '0'},
headers: {
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
},
success: function(res)
{
alert('ok');
},
error: function(msg){
console.log(msg);
}
});
})
</script>
Route:
Route::put('change','HomeController@archivearticle');
Controller:
public function archivearticle(Request $request)
{
$data = $request->all();
dd($data);
}
В итоге консоль говорит это
PUT http://localhost:8000/ 405 (Method Not Allowed)
Как это дело отладить. Или может есть другой вариант отправки PUT через AJAX!?
Не в сети
Попробуй дополнительно указать dataType. Кинь сюда код контроллера и роута
Не в сети
В теме есть и код контроллера и рута ))
dataType я так понимаю Json !?
Изменено MeKree (03.03.2017 12:24:21)
Не в сети
Попробуйте эмулировать метод PUT в запросе
...
url: '/change',
method: 'POST',
data: {id: item_id, public : 0, _method: 'PUT'},
...
Не в сети
Метод PUT обязателен, POST не подходит?
Не в сети
В теме есть и код контроллера и рута ))
dataType я так понимаю Json !?
В зависимости что ты хочешь возвращать если Html то html если json то json.
Пардон не заметил роут и контроллер, попробуй как написали выше, эмулировать пут.
Если не поможет то в роуте вместо put укажи any, а в конроллере задампь $request->method() и увидишь какой видит ларавель метод
Не в сети
Метод PUT обязателен, POST не подходит?
Да обязателен т.к мне нужно апдейтить уже существующие данные.
Да и с POST та же проблема
Изменено MeKree (03.03.2017 15:18:13)
Не в сети
попробуйте убрать
headers: {
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
},
и добавить
data: {'id': item_id, 'public' : '0', '_token':$('#_token').val()},
Не в сети
попробуйте убрать
добавитьdata: {'id': item_id, 'public' : '0', '_token':$('#_token').val()},
Не помогло, та же ошибка
Не в сети
У вас точно подхватывается значение $('#_token').val()
выведите его в лог (console.log) оно там точно отображается?
скиньте сюда ещё вот это значение, которое хватает аякс
$data = $request->input();
dd($data);
Не в сети
Зри в корень - https://laravel.ru/docs/v5/routing#подмена
Не в сети
PUT http://localhost:8000/ 405 (Method Not Allowed)
Внимательно посмотри на ошибку. ТЫ обращаешься к главной странице. А для нее метод put не резрешен.
Не в сети
измени метод на get и тогда все заработает
Не в сети
Страницы 1