2015-02-18 8 views
7

Kiedy przekazuję dane POST przez AJAX do kontrolera, jest on pusty. W AJAX dane nadal istnieją, ale po ich wysłaniu kontroler mówi, że jest pusty.Żądanie LRAVEL AJAX POST jest puste

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()); 

    } 
} 

kod, który console.logged (który jest pusty oraz powinna zawierać nazwa użytkownika):

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

Spróbuj 'dd (\ Request :: getContent))' i zobacz, co to daje. – Dencker

+0

najpierw debugować żądanie ajaxowe. Otwórz konsolę przeglądarki i sprawdź zapytanie Formularz zapytania ajax w nagłówku. – SKG

+1

daje mi 500 wewnętrzny błąd serwera, próbowałem go z prostym php $ _REQUEST, i to jest puste. –

Odpowiedz

3

W świadomości, że podaję tu swoją odpowiedź rok później od ostatniego komentarza, natknąłem się na błąd przy użyciu Laravel 5.2 i pracy z obiektami XMLHttpRequest: w końcu skończyłem analizować i porównywać nagłówki żądań wpisów , co doprowadziło mnie do po prostu ustawienie zarówno:

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

To rozwiązać mój pusty responseText. Mam nadzieję, że to pomoże komuś innemu lub może być użyte do przyszłego odniesienia.

+0

w którym miejscu kodu jest ten zestaw? – Pila

+0

@Pila, obserwując listę kodów OP, powinieneś wywołać 'setRequestHeader' na obiekcie' XMLHttpRequest' po wywołaniu jego metody 'open'. – wiredolphin