运行时从变量加载脚本:Ajax获取后端脚本字符串并添加至script标签
嘿,这事儿好办!你已经通过AJAX拿到了后端返回的脚本字符串,接下来只需要把它塞进动态创建的<script>标签里,浏览器就会自动执行这段代码啦。我给你调整下代码,顺便优化下细节:
优化后的实现代码
$.ajax({ type: "GET", url: "Users/_getScript", contentType: "application/json; charset=utf-8", cache: false, success: function (data) { // 1. 创建一个空的script元素 const dynamicScript = document.createElement('script'); // 2. 把后端返回的脚本字符串赋值给script的内容 dynamicScript.textContent = data; // 3. 将script元素添加到页面中,触发代码执行 document.head.appendChild(dynamicScript); // 可选:如果执行完不需要保留这个script标签,可以移除它 // dynamicScript.remove(); } });
几个关键细节说明
- 为啥不用全局变量
script?其实完全没必要在全局存这个脚本字符串,直接在success回调里处理返回的data就好,全局变量容易引发命名冲突,还不利于代码维护。 - 用
textContent而不是innerHTML?因为你拿到的是纯脚本字符串,textContent会把内容当作纯文本处理,避免HTML解析带来的意外问题,更安全可靠。 - 为啥添加到
<head>?这是动态注入脚本的常规操作,你也可以选择加到<body>末尾,不影响代码执行效果。
如果之前的全局变量是其他地方要用到,那也可以保留,但还是建议尽量把变量的作用域控制在回调里哦~
内容的提问来源于stack exchange,提问作者Habib Ur Rehman
相关产品推荐
相关产品推荐

