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

PHP数组转JavaScript数组显示[object object]问题求助

解决PHP数组转JavaScript数组显示[object, object]的问题

我来帮你搞定这个问题!你看到[object, object]是因为JavaScript把收到的JSON对象直接当成对象类型输出,而不是展示具体内容,另外你的PHP代码还有个容易忽略的小问题需要先修正。

第一步:修正PHP代码的变量顺序错误

你现在的代码是先输出JSON,再定义$error1和$error2,这会导致这两个变量是空值,返回的JSON内容根本不会包含你写的错误提示。调整变量位置到输出代码之前:

// 先定义错误变量,再执行输出逻辑
$error1='Size Title Required !'; 
$error2='Size Code Required !';

if($error!='') { 
    $this->output 
        ->set_content_type('application/json') 
        ->set_output(json_encode(array( 
            'message' => array( 
                array( 'status'=>'error', 'message'=> $error1 ), 
                array( 'status'=>'error', 'message'=> $error2 ) 
            ) 
        ))); 
} 

第二步:解决JavaScript端显示[object, object]的问题

[object, object]是JavaScript对对象类型的默认描述,不是报错,只是你没正确解析或访问数组里的内容。你需要这么做:

  1. 确保正确解析JSON响应
    如果你用fetch或XMLHttpRequest发起请求,要把响应解析成JSON对象,而不是直接处理原始字符串。比如用fetch的写法:

    fetch('你的PHP接口地址')
      .then(response => response.json()) // 关键步骤:把响应解析为JSON对象
      .then(data => {
        // 现在可以遍历message数组,访问每个对象的具体属性
        data.message.forEach(errorItem => {
          console.log(`状态:${errorItem.status},提示:${errorItem.message}`);
          // 也可以把内容渲染到页面上
          document.getElementById('error-container').innerHTML += `<p>${errorItem.message}</p>`;
        });
      })
      .catch(err => console.log('请求出错:', err));
    
  2. 如果只是想查看数组内容
    如果你用console.log直接输出整个数组,会显示[object, object],可以用JSON.stringify把对象转成格式化的字符串查看:

    console.log(JSON.stringify(data.message, null, 2)); // 格式化输出完整的JSON内容
    

总结

  • 先修正PHP变量的定义顺序,确保返回的JSON有正确的错误内容
  • 在JavaScript端正确解析JSON响应,然后遍历数组访问每个对象的status和message属性,而不是直接输出整个数组对象

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:47:06