PHP函数中访问Object/Array数据触发TypeError报错求助
问题分析与修复方案
错误根源
Cannot access offset of type string on string这个错误直接说明:你在server.php第21行尝试用['property']访问的变量,实际是字符串类型,而非你预期的数组或对象。大概率是JSON数据未正确解析,或者数据源返回的是纯文本而非结构化数据。
具体修复步骤
先确认变量实际类型
在第21行前加调试代码,搞清楚变量到底是什么:// 替换$target_var为你要访问的变量名 var_dump($target_var); exit;如果输出显示是
string(比如一段JSON格式的文本),那就需要先解码。正确解析JSON数据
如果变量是JSON字符串,用json_decode转成数组(推荐用关联数组,避免对象访问的问题):// 第二个参数传true,解析为关联数组 $parsed_data = json_decode($your_json_string, true); // 检查解码是否成功,避免无效JSON导致的后续错误 if (json_last_error() !== JSON_ERROR_NONE) { die('JSON解析失败:' . json_last_error_msg()); } // 之后用$parsed_data['property']访问即可对齐前后端数据格式
前端AJAX要明确指定接收JSON:$('#test').ajax({ url: 'libs/php/server.php', method: 'GET', dataType: 'json', // 告诉jQuery自动解析JSON data: { code: 'BS' }, success: function(res) { // 处理返回的结构化数据 }, error: function(xhr, err) { console.log('请求错误:', err); } });后端要输出标准JSON响应:
// 先设置正确的响应头 header('Content-Type: application/json'); // 把要返回的数据转成JSON输出 echo json_encode($country_borders_data); exit;检查数据源完整性
确认getCountryBorders函数读取的数据源(比如文件、数据库)是否正常:如果是读取本地JSON文件,检查文件路径是否正确,文件内容是否是合法的JSON结构;如果是调用第三方接口,确认接口返回的是正确的JSON数据而非错误文本。
内容的提问来源于stack exchange,提问作者Liam
相关产品推荐
相关产品推荐

