2015-07-03 24 views
8

形式:AJAX表單提交 - 沒有數據返回

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

...填寫表格,並點擊提交後,它提交表單沒有錯誤,但返回的數據(JSON)是空的:

json: []

我在做什麼錯?

+0

你需要做一些基本的調試name場。查看開發人員工具的Net標籤。查看發送到'submit.php'的請求。它是否包含您期望的表單數據?看看回應。它是否包含您期望的數據? – Quentin

+0

使用開發人員工具網絡標記。檢查提交給服務器的數據以及從服務器返回的數據。 – OIS

+0

我已經能夠重現這一點的唯一方法是,如果有形式沒有序列化的數據擺在首位(你有沒有與我們分享)。 – Quentin

回答

4

這是因爲你沒有在你的領域使用name屬性

serialize() 

需要在您的形式

+0

啊,謝謝! – 3zzy

+0

我的快樂哥們.. –

2

1: -

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

應該是: -

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

2.You不會在你的表單字段name屬性。請提供,否則serialize()將無法​​正常工作。

+0

什麼是返回數據和它呼應的性差異? – madalinivascu

+1

他同時使用'echo和print_r'這兩個不正確 –