You need to enable JavaScript to run this app. 动态设置script标签src加载JS文件后JSON.parse提示data未定义如何解决
优惠活动
大模型
产品
解决方案
定价
更多

动态设置script标签src加载JS文件后JSON.parse提示data未定义如何解决

问题原因

  • 第一处错误:loadFileScript.src赋值时错误给变量名加了引号,导致实际请求的是不存在的jsFile文件,而非你拼接好的对应文件名
  • 第二处错误:动态插入的<script>标签是异步加载的,代码执行到JSON.parse(data)时,你指定的JS文件还没完成下载和解析,data变量自然未定义

修复方案

修改后的代码如下:

<script>
    // 获取URL参数拼接目标文件名
    var jsFile = location.search.substr(1) + ".js";

    // 创建script标签
    var loadFileScript = document.createElement('script');
    loadFileScript.type = "text/javascript";
    // 修复点1:去掉引号,使用变量值作为src
    loadFileScript.src = jsFile;
    // 修复点2:等脚本加载完成后再执行后续逻辑
    loadFileScript.onload = function() {
        // 解析并使用data变量
        var mySample = JSON.parse(data);
        populateHTML(mySample);
    }
    // 可选:添加加载失败处理逻辑
    loadFileScript.onerror = function() {
        console.error('JS文件加载失败,请检查URL参数是否正确');
    }
    document.head.appendChild(loadFileScript);
    
    function populateHTML(mySample) {
        // 填充页面的逻辑写在这里
    }
</script>

额外说明

如果你的三个JS文件只是用来存储JSON数据,更推荐直接把文件改成.json后缀,用fetch请求加载数据,不需要靠全局变量传递内容,可维护性更高,也不会有全局变量污染的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 01:39:02