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

JS AJAX调用Django后端时显示JSON数组出现未定义变量问题

问题解决:AJAX渲染JSON数组时变量未定义

错误原因

你用for (var model in response.models_to_return)遍历数组时,model获取的是数组的索引值(比如"0"、"1"这类字符串),而非数组里的具体对象。所以当你尝试访问model.user_id时,会提示变量未定义——因为索引字符串不存在这些属性。

修复方案

以下是三种可行的修改方式:

方式1:使用for...of遍历数组

直接遍历数组中的每个对象,代码直观易读:

success: function go(response){
    console.log(response);
    $("#display").empty();
    // 改用for...of遍历数组元素
    for (var model of response.models_to_return)
    {
        var temp="<div class='container darker'><b>"+ model.user_id +"</b><p>"+ model.room +"</p><span class='time-left'>"+ model.datetime +"</span></div>";
        $("#display").append(temp);
    }
}

方式2:使用数组forEach方法

符合现代JavaScript风格的写法:

success: function go(response){
    console.log(response);
    $("#display").empty();
    response.models_to_return.forEach(function(model){
        var temp="<div class='container darker'><b>"+ model.user_id +"</b><p>"+ model.room +"</p><span class='time-left'>"+ model.datetime +"</span></div>";
        $("#display").append(temp);
    });
}

方式3:传统for循环(通过索引访问)

如果需要兼容旧运行环境,可采用这种方式:

success: function go(response){
    console.log(response);
    $("#display").empty();
    var models = response.models_to_return;
    // 遍历索引,通过索引获取数组对象
    for (var i = 0; i < models.length; i++)
    {
        var model = models[i];
        var temp="<div class='container darker'><b>"+ model.user_id +"</b><p>"+ model.room +"</p><span class='time-left'>"+ model.datetime +"</span></div>";
        $("#display").append(temp);
    }
}

额外提示

  • 确保Django视图返回的models_to_return是标准JSON数组,避免格式异常
  • 可在控制台打印model的值(如console.log(model)),快速排查遍历逻辑问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:25:17