簡體   English   中英

通過AJAX jQuery表單提交發送表單數據(字符串)和數組

[英]Send form data (string) and array through AJAX jQuery form submit

我研究過幾個類似的答案,但是我找不到任何說明如何同時發送一個數組字符串。

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

我的表格很簡單:

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

我希望使用AJAX提交,並將表單中的值一個名為basketData的javascript數組都basketData到我的PHP腳本。

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

我知道以上在語法上是完全不正確的,但我只是無法弄清楚如何通過此函數傳遞多個數據值。

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'];

serializeArray用於將包含表單的jQuery對象轉換為結構化數據,作為將其轉換為序列化字符串的先驅。 直接調用它很少有用,並且不能在數組上調用( otherData:basketData.serializeArray()}將拋出一個數組,因為serializeArray是未定義的,因為basketData不是jQuery對象)。

serialize用於將包含表單的jQuery對象轉換為表單編碼數據的字符串。 這非常適合處理復雜的表格。 當您要修改數據時,它變得有點麻煩。

忘記為此使用它們中的任何一個。

.ajaxdata參數接受一個JavaScript對象作為其值,然后jQuery將使用PHP針對復雜數據結構的約定將其編碼為表單數據(對您來說效果很好,因為您說數組不是平坦的並且正在使用PHP)。

只需將數組和表單控件放入數據對象即可。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM