2016-04-02 18 views
0

Dies ist mein erster Versuch, Ajax zu Post anstelle von Get zu verwenden. Ich bekomme eine 200 Antwort, als würde es funktionieren, aber die Funktion im Controller wird nie ausgeführt.Laravel 5 Ajax Post Route

Ich habe das gleiche Konzept in meinem Ajax Get Anfragen und sie funktionieren gut, aber die Post funktioniert nicht wie erwartet und sortierbar ('serialisieren') erstellt eine Post-Variable, so dass ich Post verwenden muss.

Die Warnung in der Funktion success: läuft immer so, als ob sie erfolgreich wäre, aber die Controller-Funktion wird nie getroffen (ich habe eine einfache Datenbankänderung vorgenommen, nur um zu überprüfen, ob sie läuft).

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:

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

Controller:

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

hilft Wenn die Anforderung die Methode nicht trifft, dann sollten Sie kein '200' Statuscode erhalten. Es ist die Methode zu treffen, stellen Sie sicher, dass 'dd (app ('request') -> all())' in der Methode und überprüfen Sie die Registerkarte Netzwerk in Ihrem Browser. Außerdem haben Sie das Schlüsselwort "return" nicht verwendet und keine Antwort gesendet. –

+0

Ich habe beide dieser Dinge müde - die dd() wird nie in der Methode getroffen. Das Schlüsselwort return gibt auch nichts zurück. Ich schaute auf den Netzwerk-Tab in Chrome zeigt eine 200 Antwort, aber von localhost/home, nicht die api/sort_order_item, die eine 302 direkt davor zurückgibt. – circle1

+0

Dann gibt es eine Weiterleitung für 'auth' wie Dinge. –

Antwort

1

ich Ihr Problem denken csrf_token ist, diese Zeile in Ihrer Klinge Seite Kopfteil Put:

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

dann Ihre Ajax-Code wie folgt aktualisiert:

$.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...'); 
      }, 
     }); 

Lassen Sie mich wissen, wenn es Sie

+0

Ja !!! Das war es, das csrf-Token war fehlgeschlagen und per Routing zum Login-Bildschirm umgeleitet. – circle1

+0

Haben Sie eine gute Codierung :) – BKF