[英]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對象轉換為表單編碼數據的字符串。 這非常適合處理復雜的表格。 當您要修改數據時,它變得有點麻煩。
忘記為此使用它們中的任何一個。
.ajax
的data
參數接受一個JavaScript對象作為其值,然后jQuery將使用PHP針對復雜數據結構的約定將其編碼為表單數據(對您來說效果很好,因為您說數組不是平坦的並且正在使用PHP)。
只需將數組和表單控件的值放入數據對象即可。
data: {
email: $("input[name='user-mail']").val(),
array: basketData
},
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.