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

PHP中如何提取JSON数组的值作为变量并在AJAX接收页使用

解决步骤

一、先修正page1的代码问题

你当前的page1代码有两个遗漏点:

  • while循环没有给$i自增,只会存储最后一条查询结果
  • 没有将PHP数组转为JSON字符串输出给前端AJAX
    修正后的page1代码:
// 加响应头,指定返回JSON格式
header('Content-Type: application/json');
$json = [];
// 这里也建议用预处理语句避免SQL注入
$stmt = mysqli_prepare($connection, "select * from json where id = ?");
mysqli_stmt_bind_param($stmt, "s", $id);
mysqli_stmt_execute($stmt);
$run = mysqli_stmt_get_result($stmt);

while($exe = mysqli_fetch_array($run, MYSQLI_ASSOC)) {
    // 不需要手动维护$i,直接追加数组即可
    $json[] = [
        "name" => $exe["name"]
    ];
}
// 输出JSON字符串给前端
echo json_encode($json);

二、前端AJAX传值逻辑

拿到page1返回的JSON数据后,请求page2时将该JSON数据作为参数传递即可,原生JS示例:

// 先请求page1拿数据
fetch('page1.php')
  .then(res => res.json())
  .then(jsonData => {
    // 再请求page2,把JSON数据传过去
    return fetch('page2.php', {
      method: 'POST',
      body: JSON.stringify(jsonData),
      headers: {
        'Content-Type': 'application/json'
      }
    })
  })

三、page2获取name值的实现

// 接收前端传过来的原始JSON数据
$receivedJson = file_get_contents('php://input');
// 转为PHP关联数组,第二个参数必须传true才会返回数组格式
$jsonArray = json_decode($receivedJson, true);

// 取单条name值,下标对应page1返回的数组顺序,取第一条就写0
// 空合并运算符用来避免下标不存在时报错
$name = $jsonArray[0]['name'] ?? '';

// 如果需要遍历所有name值,用foreach循环即可
foreach($jsonArray as $item) {
    $currentName = $item['name'];
    // 针对单个name的业务逻辑
}

// 后续查询务必要用预处理语句,避免SQL注入,不要用字符串拼接的写法
$stmt = mysqli_prepare($connection, "select name from json1 where name = ?");
mysqli_stmt_bind_param($stmt, "s", $name);
mysqli_stmt_execute($stmt);
$query1Result = mysqli_stmt_get_result($stmt);

注意事项

  • 如果page1返回的数组有多条数据,不要固定写死下标,建议通过遍历获取所有name值
  • 所有涉及数据库操作的场景都不要直接拼接用户传入的变量,必须用预处理语句规避SQL注入漏洞

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:54:02