You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AJAX将二维JavaScript数组传递给PHP并访问数据?

解决AJAX传递二维数据到PHP的问题

问题根源

你在JS里错误地用数组([])存储键值对数据,JS数组是索引型结构,字符串键(比如items1)会被当作数组对象的附加属性而非数组元素,jQuery处理AJAX数据时不会包含这些属性,导致PHP端接收不到对应内容。


方案1:直接传递JS对象(推荐,适合简单结构)

步骤1:修正JS的数据定义

把数组改成对象,用{}替代[]:

var data = {};
data['items1'] = ["item1_1", "item1_2"];
data['items2'] = ["item2_1", "item2_2"];

步骤2:AJAX代码保持不变

jQuery会自动将对象编码为表单格式,无需额外处理:

jQuery.ajax({
    type: "POST",
    url: ajax_site_url, 
    dataType: 'json',
    data: {
        action: "my_php_case",
        data: data,
    },
    success: function(response) { 
    },
});

步骤3:PHP端获取数据

现在你最初写的代码就能正常拿到数据:

$items1 = $_POST['data']['items1'];
// 测试输出:print_r($items1); 会得到 Array ( [0] => item1_1 [1] => item1_2 )

方案2:传递JSON字符串(适合复杂嵌套结构)

如果需要传递更复杂的嵌套数据结构,可以用这种方式:

步骤1:JS端处理数据并设置请求头

var data = {};
data['items1'] = ["item1_1", "item1_2"];
data['items2'] = ["item2_1", "item2_2"];

jQuery.ajax({
    type: "POST",
    url: ajax_site_url, 
    dataType: 'json',
    contentType: 'application/json', // 必须设置该请求头,告知PHP数据格式
    data: JSON.stringify({
        action: "my_php_case",
        data: data,
    }),
    success: function(response) { 
    },
});

步骤2:PHP端解析JSON

此时数据不会存入$_POST,需要读取原始请求内容解析:

$rawData = file_get_contents('php://input');
$requestData = json_decode($rawData, true); // true将JSON转为关联数组

$items1 = $requestData['data']['items1'];
// 测试输出:print_r($items1);

内容的提问来源于stack exchange,提问作者eligolf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 09:10:11