2015-02-18 10 views
7

Wenn ich POST-Daten über AJAX an meine Steuerung weiterleiten, ist es leer. Im AJAX sind die Daten immer noch da, aber nachdem ich es dem Controller gesendet habe, heißt es, dass es leer ist.Laravel AJAX POST-Anforderung ist leer

AJAX:

function usernameCheck() 
{ 
    var input = document.getElementById("usernameInput"); 
    var icon = document.getElementById("userIcon"); 
    var xmlhttp, 
     username = document.getElementById("usernameInput"), 
     message = document.getElementById("usernameMessage"); 

    if (username.value != "") { 
     if (window.XMLHttpRequest) { 
      // code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp=new XMLHttpRequest(); 
     } else { 
      // code for IE6, IE5 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     xmlhttp.onreadystatechange = function() { 
      if (xmlhttp.readyState==4 && xmlhttp.status==200) { 

       // FOR DEBUGGING 
       console.log(xmlhttp.responseText); 

      } 
     } 
    } 

    xmlhttp.open("POST", "usernamevalidation", true); 
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    xmlhttp.send("username=" + username.value); 
    } 
    } 

routes.php:

Route::post('usernamevalidation', '[email protected]'); 

UserController.php:

class UserController extends BaseController { 

    public function validateUsername() { 

     // FOR DEBUGGING 
     dd(Input::all()); 

    } 
} 

Der Code, den I console.logged (die leer ist und die enthalten sollte, Benutzername):

<pre class='xdebug-var-dump' dir='ltr'> 
<b>array</b> <i>(size=0)</i> 
    <i><font color='#888a85'>empty</font></i> 
</pre> 
+0

Versuchen Sie 'dd (\ Request :: getContent))' und sehen Sie, was Sie erhalten. – Dencker

+0

debug die Ajax-Anfrage zuerst. Öffnen Sie Ihre Browser-Konsole und prüfen Sie die Ajax-Anfrage Formular Daten in der Kopfzeile. – SKG

+1

es gibt mir einen 500 internen Server Fehler, ich versuchte es mit einfachen PHP $ _REQUEST, und das ist auch leer. –

Antwort

3

In dem Bewusstsein, dass ich meine Antwort hier ein Jahr später seit dem letzten Kommentar gebe, bin ich über den Fehler Laravel 5.2 gestolpert und arbeite mit XMLHttpRequest Objekte: endlich endete ich zu analysieren und zu vergleichen Post Request Header , die beide führte mich einfach einstellen:

xmlhttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); 
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=UTF-8'); 

Das ist mein leer responseText gelöst. Hoffe, das kann jemand anderem helfen oder kann für zukünftige Referenz verwendet werden.

+0

an welchem ​​Punkt im Code ist dieser Satz? – Pila

+0

@Pila, beobachten Sie die OP-Code-Liste, sollten Sie den 'setRequestHeader' auf dem 'XMLHttpRequest' Objekt nach dem Aufruf seiner' open' Methode aufrufen. – wiredolphin