簡體   English   中英

無法通過jQuery ajax發布Javascript數組

[英]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.

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