Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 03.03.2017 11:48:16

Проблемы с Laravel 5.4 + ajax

Не понемаю почему не получается передать запрос в контроллер средствами 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!?

Не в сети

#2 03.03.2017 12:19:51

Re: Проблемы с Laravel 5.4 + ajax

Попробуй дополнительно указать dataType. Кинь сюда код контроллера и роута

Не в сети

#3 03.03.2017 12:23:43

Re: Проблемы с Laravel 5.4 + ajax

В теме есть и код контроллера и рута ))
dataType я так понимаю Json !?

Изменено MeKree (03.03.2017 12:24:21)

Не в сети

#4 03.03.2017 12:53:17

skiphog
Откуда: Киров, Россия
Сообщений: 26

Re: Проблемы с Laravel 5.4 + ajax

Попробуйте эмулировать метод PUT в запросе

...
url: '/change',
method: 'POST',
data: {id: item_id, public : 0, _method: 'PUT'},
...

Не в сети

#5 03.03.2017 12:59:34

Re: Проблемы с Laravel 5.4 + ajax

Метод PUT обязателен, POST не подходит?

Не в сети

#6 03.03.2017 13:08:15

Re: Проблемы с Laravel 5.4 + ajax

MeKree пишет:

В теме есть и код контроллера и рута ))
dataType я так понимаю Json !?

В зависимости что ты хочешь возвращать если Html то html если json то json.
Пардон не заметил роут и контроллер, попробуй как написали выше, эмулировать пут.
Если не поможет то в роуте вместо put укажи any, а в конроллере задампь $request->method() и увидишь какой видит ларавель метод

Не в сети

#7 03.03.2017 15:17:35

Re: Проблемы с Laravel 5.4 + ajax

Dens пишет:

Метод PUT обязателен, POST не подходит?

Да обязателен т.к мне нужно апдейтить уже существующие данные.
Да и с POST та же проблема

Изменено MeKree (03.03.2017 15:18:13)

Не в сети

#8 03.03.2017 16:38:09

Re: Проблемы с Laravel 5.4 + ajax

попробуйте убрать

headers: {
          'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
     },

и добавить

data: {'id': item_id, 'public' : '0', '_token':$('#_token').val()},

Не в сети

#9 04.03.2017 21:51:27

Re: Проблемы с Laravel 5.4 + ajax

Dens пишет:

попробуйте убрать
добавить

data: {'id': item_id, 'public' : '0', '_token':$('#_token').val()},

Не помогло, та же ошибка

Не в сети

#10 04.03.2017 23:53:39

Re: Проблемы с Laravel 5.4 + ajax

У вас точно подхватывается значение $('#_token').val()
выведите его в лог (console.log) оно там точно отображается?
скиньте сюда ещё вот это значение, которое хватает аякс

$data = $request->input();
dd($data);

Не в сети

#11 10.08.2017 17:41:13

Re: Проблемы с Laravel 5.4 + ajax

Не в сети

#12 11.08.2017 18:09:22

Re: Проблемы с Laravel 5.4 + ajax

PUT http://localhost:8000/ 405 (Method Not Allowed)

Внимательно посмотри на ошибку. ТЫ обращаешься к главной странице. А для нее метод put не резрешен.

Не в сети

#13 15.08.2017 11:23:31

Re: Проблемы с Laravel 5.4 + ajax

измени метод на get и тогда все заработает

Не в сети

Подвал раздела