2015-11-02 63 views
0

我研究過幾個類似的答案,但是我找不到任何說明如何發送一個數組,的字符串。發送表單數據(串)和陣列通過AJAX jQuery的形式提交

我發現.serialize.serializeArray應該允許我構建字符串,我需要將表單數據和數組發送到我的PHP腳本,但我無法理解使用這兩個函數在一起的語法。

我的形式很簡單:

<form id="email-input"> 
    <input type="email" name="user-mail" /> 
</form> 

我希望與AJAX提交,並在窗體 JavaScript數組稱爲basketData到我的PHP腳本同時發送的值。

$.ajax({ 
      type: "POST", 
      url: "scripts/send-mail.php", 
      data: {$("#email-input").serialize(),basketData.serializeArray()} 
      success: function(data) 
      { 
       console.log(data); 
      } 
     }); 

我知道上面是完全語法不正確,但我不能工作,如何通過此功能通過多個數據值。

+0

什麼是'basketData'?爲什麼你需要一起使用這兩個功能? – Quentin

+0

@Quentin在OP中指定它是一個數組。我需要在我的PHP腳本中使用這些數據。 – user1486133

+0

不能將'serializeArray'作爲數組的方法調用,它不是數組方法。 – Quentin

回答

0

的jQuery:

$.ajax({ 
    type: "POST", 
    url: "scripts/send-mail.php", 
    data: { 
     email: $('input[name="user-mail"]').val(), 
     basketData: basketData 
    } 
    success: function(data) { 
     console.log(data); 
    } 
}); 

PHP:

$email = $_POST['email']; 
$basketData = $_POST['basketData']; 
+0

原因downvote請???????? ?? – TheCarver

+0

實際上我並不是那種低調的人,但這並不可悲。儘管數組部分工作得很好,但它無法從輸入字段獲得任何值。我相信這是因爲在'form#email-input'上使用了'.val()',這對我沒有任何意義。 – user1486133

+0

@ user1486133:現在就試試。我對電子郵件輸入有誤。 – TheCarver

0

serializeArray是用於將含一種形式的jQuery成結構化數據作爲前體用於在將其轉換成一個序列化的字符串。直接調用它並不是很有用,它不能在數組上調用(otherData:basketData.serializeArray()}將拋出數組,因爲serializeArray未定義,因爲basketData不是jQuery對象)。

serialize用於將包含表單的jQuery對象轉換爲表單編碼數據的字符串。處理複雜的表單非常棒。當你想要修改數據時,它變得有點費勁。

忘記爲此使用其中任何一個。

data論據.ajax接受JavaScript對象作爲其值,然後jQuery將使用PHP的約定,複雜的數據結構(因爲你說你的陣列是不平坦的,其工作地非常好爲您編碼它作爲表單數據你正在使用PHP)。

只需將窗體控件的數組和插入到您的數據對象中即可。

data: { 
    email: $("input[name='user-mail']").val(), 
    array: basketData 
}, 
+0

感謝您在答案中的解釋。你可以展示如何在PHP腳本中使用這些值,因爲我目前沒有從'$ email = $ _POST ['email'];' – user1486133

+0

@ user1486133獲取任何內容 - 對我來說工作正常:https:// www。 evernote.com/l/AAM-HlizCzlEzIJ7nFc-l1jGblmvqAQ9jiw – Quentin