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

PHP中json_encode返回的数组值在AJAX接收时显示undefined如何解决

解决方案

  1. 修正AJAX配置的属性名错误
    jQuery的ajax方法的响应类型配置项是大小写敏感的驼峰命名dataType,你代码中写成全小写的datatype,导致框架不会自动将返回的字符串解析为JSON对象,此时你拿到的data是纯字符串,访问total属性自然返回undefined。
  2. 补充PHP端的响应头声明与输出控制
    如果未明确指定JSON响应头,部分环境下jQuery会误判响应内容类型,同时要避免JSON输出前有多余的空格、报错、HTML标签等内容污染JSON格式。

修正后的cart.php代码

<?php
// 明确声明JSON响应头,指定编码避免乱码
header('Content-Type: application/json; charset=utf-8');
$data = array();
$data['total'] = '10000';
$data['quantity'] = '10';
echo json_encode($data);
// 终止后续执行,避免多余输出破坏JSON结构
exit;
?>

修正后的AJAX代码

function view()
{
  $.ajax({  
    url: 'cart.php',
    type:'POST',
    data:{action:'total'},
    // 改为驼峰命名,T大写
    dataType:'json',
    success: function (data) {
        alert(data.total);
    }
  });
}

如果修改后仍然出现问题,可以在success回调中先打印返回内容排查:

success: function (data) {
  // 查看返回内容类型,若为字符串可手动解析
  console.log(typeof data, data);
  // 手动解析兼容方案
  if(typeof data === 'string') {
    data = JSON.parse(data);
  }
  alert(data.total);
}

内容的提问来源于stack exchange,提问作者Bithat Ch-Faiq

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 04:39:03