【问题标题】:Pass array through jquery ajax request?通过jquery ajax请求传递数组?
【发布时间】:2026-01-18 11:25:01
【问题描述】:

尝试使用 ajax 请求将数组传递给 php 页面。当前响应是ction Array() { [native code] },而不是实际的数组内容(我是肯定的不是空的)。这是我的代码:

    function GetPaginationPage(array1) {
    var jsonString = JSON.stringify(array1);

    $.ajax({
        type: "POST",
        url: "includes/get_pagination_page.php",
        data: {data : jsonString},
        success: function(data){ 
        $('.contestants_list').append(data);
        }
        });
};

用 json 更新,现在传递 'undefined'

【问题讨论】:

  • 改用对象,一切都差不多。像 data = new Object() ... data['some_key'] = 'some_value'; ...您可以将其发送过来。
  • 你怎么打电话给GetPaginationPage?当你console.log(array1) 时会发生什么?
  • 使用 php 数组。GetPaginationPage(<?php echo $contestants_array; ?>); $contestants_array 是一个数组
  • @JonahKatz:你不能像这样将 PHP 数组传递给 JavaScript。使用GetPaginationPage(<?php echo json_encode($contestants_array); ?>);

标签: jquery ajax arrays


【解决方案1】:

这里没有理由使用JSON.stringify。只需将数组正常发送到 PHP。

function GetPaginationPage(array1) {
    $.ajax({
        type: "POST",
        url: "includes/get_pagination_page.php",
        data: {
            data: array1
        },
        success: function (data) {
            $('.contestants_list').append(data);
        }
    });
}

现在在 PHP 中,$_POST['data'] 将是一个数组。

更新:你说你像这样打电话给GetPaginationPage

GetPaginationPage(<?php echo $contestants_array; ?>);

您需要将其更改为:

GetPaginationPage(<?php echo json_encode($contestants_array); ?>);

当您在 PHP 中 echo 一个数组时,它会被转换为字符串 "Array",JavaScript 将其解释为 Array 对象。

【讨论】:

  • 认为已经接近了。它现在发布data:[object Object] data:[object Object] data:[object Object] 我们需要实际对象的地方,而不是它的对象的脸
  • @JonahKatz:好像它在某处被转换为字符串。确保您没有使用.join(','),它不适用于对象数组。当你console.log(array1) 时会发生什么?
【解决方案2】:

我这样做的方法是在 JavaScript 中将数组创建为分隔 (~) 字符串,然后我使用 explode php 函数加载到数组中。

【讨论】:

    【解决方案3】:

    在传递之前将数组转换为字符串:

    array1.join(',');
    

    或者如果它是一个复杂的数组,考虑 JSON:

    JSON.stringify(array1);
    

    【讨论】:

    • 使用您的回答更新我的问题。它现在被低估了
    • 这只是意味着您的变量中没有任何内容。你确定你在“array1”中有东西吗?
    • 是的。我可以打印它并且有大量数据。有没有可能我没有正确通过?