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

Yii2中通过Ajax调用API无法正确提取msim_id字段的问题

解决方法

首先在success回调里添加代码,明确响应数据的实际结构:

success: function (imsi) {
    console.log('数据类型:', typeof imsi);
    console.log('对象所有键:', Object.keys(imsi));
    console.log('原始响应数据:', imsi);
    // 后续提取逻辑写在这里
}

根据排查结果对应处理:

情况1:响应是未解析的JSON字符串

如果typeof imsi返回string,说明jQuery没自动解析JSON(大概率是服务器返回的Content-Type不是application/json),手动解析后提取:

const parsedData = JSON.parse(imsi);
console.log(parsedData['0'].msim_id);
// 赋值到输入框
$('#metertosimmapping-imsi').val(parsedData['0'].msim_id);

情况2:响应是带数字键的对象

如果Object.keys(imsi)返回['0'],说明imsi是一个以字符串'0'为键的对象,直接通过键访问:

console.log(imsi['0'].msim_id);
// 或imsi[0].msim_id(数字键会自动转为字符串)
$('#metertosimmapping-imsi').val(imsi['0'].msim_id);

情况3:响应被嵌套在顶层属性中

部分服务器会把数据包裹在data/result这类顶层属性里,比如:

// 假设实际结构为 { data: { 0: { msim_id: 'xxx' } } }
console.log(imsi.data['0'].msim_id);

额外提示

  • 注意控制台的自动展开特性,查看响应的原始输出,确认结构是否和你看到的一致;
  • 你的判断代码已排除imsi是数组的可能,无需再尝试imsi[0]的数组访问方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:57:10