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

嵌入式系统静态/动态加载jQuery行为差异及上传故障求助

嵌入式系统本地动态加载jQuery后上传功能异常问题

背景

我有一台嵌入式系统,每台设备对应独立IP(示例:192.168.0.237),其文件导入/加载功能依赖jQuery,目标是让该功能无需联网即可运行。当前使用在线jQuery链接(https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js)时功能正常。

改为本地加载jquery.js时,静态引入<script src='http://192.168.0.237/jquery.js'></script>(页面运行在8989端口)能正常实现上传功能。但为适配不同设备IP,我编写脚本通过window.location.hostname获取设备IP并拼接URL动态加载jQuery。

动态加载代码

<script>
let k2 = '#http://';
let k3 = window.location.hostname;
let k4 = '@jquery.js';
let fim = `${k2} ${k3} ${k4}`;
fim = fim.replace(' @', '/');
fim = fim.replace('#', ' ');
fim = fim.replace('// ', '//');
fim = fim.trim();
document.getElementById('demo').innerHTML = window.jQuery;
document.getElementById('kkk').innerHTML = fim;
document.head.appendChild(document.createElement('script')).src = fim;
</script>

异常情况

动态加载后,jQuery状态检测显示已加载,但点击上传提交按钮时出现错误:请求指向不存在的serverIndex:1,正确请求应为serverIndex。静态加载时上传功能正常,请求的INITIATOR为serverIndex。

完整渲染后代码

<head>
    <meta charset='utf-8'>
    <meta http-equiv='X-UA-Compatible' content='IE=edge'>
    <meta name='viewport' content='width=device-width, initial-scale=1.0'>
   <script>  
        function checa() {
        if(jQuery) {
            alert('Jquery ONLOAD!');
        } else {
            alert('Jquery NOT HAVE - NUNCA EXECUTA');
        }
    }
    </script>
    <script src='http://192.168.0.237/jquery.js'></script>
</head>
<button onclick='checa()'>Check Status JQuery</button>
<form method='POST' action='#' enctype='multipart/form-data' id='upload_form'>
    <h4>valor:</h4>
    <p id='demo'> </p>
    <p id='kkk'></p>
    <h3>Verificador de preço</h3>
    <h3>Update Firmware</h3>
    <input type='file' name='update' id='file' onchange='sub(this)' style=display:none accept='.bin' required>
    <label id='file-input' for='file'> Selecione o arquivo ...</label>
    <input type='submit' class=btn value='Atualizar'>
    <br>
    <br>
    <div id='prg'></div>
    <br>
    <div id='prgbar'>
        <div id='bar'></div>
    </div>
    <br>
</form>
<script>
let k2 = '#http://';
let k3 = window.location.hostname;
let k4 = '@jquery.js';
let fim = `${k2} ${k3} ${k4}`;
fim = fim.replace(' @', '/');
fim = fim.replace('#', ' ');
fim = fim.replace('// ', '//');
fim = fim.trim();
document.getElementById('demo').innerHTML = window.jQuery;
document.getElementById('kkk').innerHTML = fim;
document.head.appendChild(document.createElement('script')).src = fim;
</script>
<script> <!-- DOWN IS SCRIPT  UPLOAD FILE !-->
function sub(obj) {
    var fileName = obj.value.split('\\');
    document.getElementById('file-input').innerHTML = '   ' + fileName[fileName.length - 1];
</script>

需求

  1. 解决动态加载jQuery后上传功能的异常问题
  2. 确认当前动态加载方案是否合理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:25:17