2015-07-03 15 views
8

Forma:złożenie formularza AJAX - Brak danych zwrócony

<form action="" id="register" method="post"> 
    <input type="text" placeholder="eg. John"> 
    <input type="text" placeholder="eg. Appleseed"> 
    <input type="text" placeholder="[email protected]"> 
</form> 

JS:

$('form#register').on('submit',function (e) { 
    $.ajax({ 
     url: 'submit.php', 
     cache: false, 
     type: 'POST', 
     context: this, 
     data : $(this).serialize(), 
     success: function(json) { 
      console.log("json: " + json); 
     } 
    }); 
    e.preventDefault(); 
}); 

PHP:

$formData = json_encode($_POST); 
echo print_r($formData,1); 

... po wypełnieniu formularza i uderzając przedstawienia, to nie złożyć formularz bez błędu, ale zwrócone dane (JSON) są puste:

json: []

Co robię źle?

+0

trzeba zrobić podstawowe debugowanie. Zajrzyj na kartę Net narzędzi deweloperskich. Sprawdź, czy żądanie jest wysyłane do 'submit.php'. Czy zawiera dane formularza, których oczekujesz? Spójrz na odpowiedź. Czy zawiera oczekiwane dane? – Quentin

+0

Użyj tagu sieciowego narzędzi programistycznych. Sprawdź, które dane są przesyłane do serwera i które dane są zwracane z serwera. – OIS

+0

Jedynym sposobem, w jaki udało mi się to odtworzyć, było to, że w formularzu nie było żadnych danych do serializacji (które nie zostały nam udostępnione). – Quentin

Odpowiedz

4

To dlatego, że nie używasz atrybut name w swoich dziedzinach

serialize() 

Wymaga name pola w formularzu

+0

Ah heck, dzięki człowieku! – 3zzy

+0

Moja przyjemność kolego .. –

2

1: -

$formData = json_encode($_POST); echo print_r($formData,1);

powinno być: -

$formData = json_encode($_POST); 
echo $formData; 

2.You nie mają name atrybut w polach formularza. proszę podać, że w przeciwnym razie serialize() nie będzie działać poprawnie.

+0

jaka jest różnica w odniesieniu do zwracania danych i wywoływania echa? – madalinivascu

+1

użył zarówno "echo, jak i print_r" zarówno razem, co nie jest poprawne –

Powiązane problemy