[英]Unable to post Javascript array via jQuery ajax
我非常不願意提出這個問題,因為我知道這確實是我所缺少的愚蠢之舉,但是我根本無法解決這個問題。 代碼如下:
<script>
var formArray = new Array();
formArray['start'] = "one";
formArray['stopat'] = "two";
formArray['stop_at'] = "three";
$('#my_button').click(function() {
$.ajax({
type: "POST",
url: "scheduler.php",
data: formArray,
success: function(response){
console.log(response);
}
});
});
</script>
服務器端PHP腳本scheduler.php
<?php
print_r($_POST);
?>
我重新登錄到控制台的所有內容都是一個空數組:
Array
(
)
如果我在click函數中使用console.log formArray
,它將顯示完整的數組。 那么為什么不將其發布到我的PHP文件中呢?
提前致謝
將Array()
更改為Object()
也可以。
您將獲得:
Array
(
[start] => one
[stopat] => two
[stop_at] => three
)
您正在將字符串屬性添加到用於存儲數字索引的數組。
改用一個對象:
var formArray = {};
formArray['start'] = "one";
formArray['stopat'] = "two";
formArray['stop_at'] = "three";
jQuery將使用for (var i = 0; i < formArray.length; ++i)
循環遍歷數組中的索引,這將完全丟失您添加到數組中的所有屬性。
另外, new Array
應該是[]
(因為{}
應該比new Object
更可取)。 不要對內置類型使用new X
初始化方法。 (克羅福德,好零件)
JavaScript數組設計為使用整數鍵保存項目的有序序列。 當jQuery將數據結構轉換為Form URL Encoded數據並遇到數組時,它將遍歷那些整數鍵而不是命名鍵。
如果要命名鍵,請使用對象 。
將new Array()
更改為newObject()
像這樣編輯您的Ajax,看看它是否有效: data: {data: formArray}, dataType: 'JSON'
$.ajax({
type: "POST",
url: "scheduler.php",
data: {data : formArray},
dataType: 'JSON'
success: function(response){
console.log(response);
}
});
PHP:
print_r($_POST['data']);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.