script 元素能够动态加载远程 JavaScript 脚本文件。JavaScript 脚本文件不仅仅可以被执行,还可以附加数据。在服务器端使用 JavaScript 文件附加数据之后,当在客户端使用 script 元素加载这些远程脚本时,附加在 JavaScript 文件中的信息也一同被加载到客户端,从而实现数据异步交互的目的。下面示例演示如何动态生成 script 元素,并通过 script 元素实现远程数据加载。
1) 定义一个异步请求的封装函数。
- //创建<script>标签,参数url表示要请求的服务器端文件路径
- function request (url) {
- if (! document.script) { //如果在document对象中不存在script属性
- document.script = document.createElement("script"); //创建script元素
- document.script.setAttribute("type", "text/javascript"); //设置脚本类型属性
- document.script.setAttribute("src", url); //设置JavaScript文件的路径
- document.body.appendChild(document.script); //把创建的script元素添加到页面中
- } else { //如果已经存在script元素
- document.script.setAttribute("src", url); //则直接设置src属性
- }
- }
2) 完善客户端提交页面的结构和脚本代码。上面这个请求函数是整个 script 异步交互的核心。下面就可以来设计客户端提交页面。
- <script>
- function callback (info) { //客户端回调函数
- console.log(info);
- }
- function request (url) { //script异步请求函数
- console.log(url);
- }
- window.onload = function () { //页面初始化处理函数
- var b = document.getElementsByTagName("input")[0];
- b.onclick = function () { //为页面按钮绑定异步请求函数
- request ("server.js");
- }
- }
- </script>
- <input name="submit" type="button" id="submit" value="向服务器发出请求" />
3) 在服务器端的响应文件(server.js)中输入下面的代码。
- callback("这里是服务器端数据信息");
4) 当预览客户端提交页面时,不会立即发生异步交互的动作,而是当单击按钮时才会触发异步请求和响应行为,这正是异步交互所要的设计效果。