CodeIgniter中调用JSON接口后无法在视图展示指定变量的问题求助
解决视图中无法正确展示API返回的AWB编号问题
首先,你遇到的Undefined property: stdClass::$awb_number错误,核心原因是你在视图中调用的属性名和API返回的JSON结构中的键名不匹配,而且PHP的对象属性名是大小写敏感的。
第一步:确认API返回的真实数据结构
调试这类问题的关键是先搞清楚你拿到的$result到底是什么结构。你可以通过以下方式查看:
- 在控制器的
$result = json_decode($result);之后,添加代码:
var_dump($result); exit;
这样就能直接看到API返回的对象包含哪些属性。
- 或者在视图最开头添加:
<?php print_r($data); ?>
结合你请求API时用的AwbNumber作为参数名,很大概率API返回的结构里,AWB编号的键名是驼峰式的AwbNumber,而非你写的下划线式awb_number。
第二步:修正视图中的属性调用
如果打印后确认属性名是AwbNumber,把视图里的代码改成:
<p>AwbNumber: <span id="code"><?php echo $data->AwbNumber ?></span></p>
要是API返回的是数组结构(比如你用json_decode($result, true)转成了数组),则改成数组访问方式:
<p>AwbNumber: <span id="code"><?php echo $data['AwbNumber'] ?></span></p>
额外小提示:控制器的冗余输出问题
你在控制器里先执行了echo json_encode(...),之后又加载视图,这会导致输出同时包含JSON字符串和HTML内容,可能引发渲染异常。如果这个方法是给页面调用的(非AJAX接口),建议删掉那行echo代码;如果需要同时支持AJAX和页面访问,可以增加请求类型判断,再决定返回JSON还是加载视图。
内容的提问来源于stack exchange,提问作者Zubi Da
相关产品推荐
相关产品推荐

