2016-04-02 3 views
0

Это моя первая попытка использовать ajax для Post вместо Get. Я получаю ответ 200, как если бы он работал, но функция в контроллере никогда не запускается.Laravel 5 Ajax Почтовый маршрут

Я использовал эту ту же концепцию в своих приложениях ajax Get, и они работают нормально, но Post работает не так, как ожидалось, и сортировка («serialize») создает переменную Post, поэтому мне нужно использовать Post.

Предупреждение об успешности: функция всегда работает так, как если бы она была успешной, но функция контроллера никогда не ударялась (у меня есть простая замена базы данных, чтобы проверить, работает ли она).

Ajax:

$(function() { 
    $('[id^="sortable_"]').sortable(
    { 
     connectWith: '.sortable-line-item-list-5',  
     update : function (event, ui) 
     { 
     var items = $(this).sortable('serialize'); 
      $.ajax({ 
       type: 'post', 
       url: '/api/sort_order_item', 
       data: { 
        'items': items, 
       }, 
       success: function() 
       { 
        alert('looks like it is working...'); 
       }, 
      }); 
     } 
    }); 
    $('[id^="sortable_"]').disableSelection(); 
}); 

Маршрут:

Route::post('api/sort_order_item', ['as' => 'api/sort_order_item', 'uses' =>'[email protected]']); 

Контроллер:

public function SortOrderItem() 
{ 
    $this_item = \pmms\Checklist_template_line_item::findOrFail(20); 
    $this_item->list_position = 1; 
    $this_item->save(); 
} 
+0

Если запрос не ударяя метод, то вы не должны получить '200' код статуса. Это ударит по методу, убедитесь, что 'dd (app ('request') -> all())' в методе и проверьте вкладку сети в вашем браузере. Также вы не использовали ключевое слово 'return' и не отправляли ответ. –

+0

Я устал от этих вещей - dd() никогда не попадает в метод. Ключевое слово return тоже ничего не возвращает. Я посмотрел на вкладку сети в Chrome, она показывает ответ 200, но из localhost/home, а не api/sort_order_item, который возвращает 302 непосредственно перед ним. – circle1

+0

Тогда есть перенаправление для 'auth' подобных вещей. –

ответ

1

Я думаю, ваша проблема csrf_token, Поместите эту строку в лопастной страницу головной секции:

<meta name="csrf-token" content="{{ csrf_token() }}" /> 

затем обновить код Ajax, как это:

$.ajax({ 
      type: 'post', 
      url: '/api/sort_order_item', 
      data: { 
       'items': items, 
       '_token': $('meta[name="csrf-token"]').attr('content'), 
      }, 
      success: function() 
      { 
       alert('looks like it is working...'); 
      }, 
     }); 

Позвольте мне знать, если это поможет вам

+0

Да !!! Именно так, токен csrf терпел неудачу и перенаправлялся на экран входа в систему по дизайну. – circle1

+0

Хорошее кодирование :) – BKF

Смежные вопросы