获取HTML文本
设计响应信息为HTML字符串是一种常用方法,这样再客户端就可以直接使用innerHTML属性把获取的字符串插入到网页中。
示例:
<%--Created by IntelliJ IDEA.User: 19798Date: 2019/9/28Time: 9:39
--%>
<%&#64; page contentType&#61;"text/html;charset&#61;UTF-8" language&#61;"java" %>
<html>
<head><title>Titletitle><script>function createXMLHTTPObject() {var XMLHttpFactories &#61; [function () {return new XMLHttpRequest()},function () {return new ActiveXObject("Msxml2.XMLHTTP")},function () {return new ActiveXObject("Msxml3.XMLHTTP")},function () {return new ActiveXObject("Microsoft.XMLHTTP")}];var xmlhttp &#61; false;for(var i &#61; 0; i < XMLHttpFactories.length; i&#43;&#43;){try{xmlhttp &#61; XMLHttpFactories[i]();}catch (e) {continue;}break;}return xmlhttp;}script>
head>
<body><h1>AJAX测试h1><button id&#61;"btn" value&#61;"btn" onclick&#61;"f()">按钮button><div id&#61;"grid">div><script>function f() {var ajax &#61; createXMLHTTPObject();ajax.onreadystatechange &#61; function(){if(ajax.readyState &#61;&#61; 4 && ajax.status &#61;&#61; 200){var o &#61; document.getElementById("grid");o.innerHTML &#61; ajax.responseText;}}ajax.open("get", "response.jsp",false);ajax.send();}script>
body>
html>
response.jsp:
<%response.getWriter().write("" &#43;"RegExp.exec() | 通用的匹配模式 |
" &#43;"RegExp.test() | 检测一个字符串是否匹配某个模式 |
" &#43;"
");
%>
点击按钮&#xff1a;
注意&#xff1a;再某些情况下&#xff0c;HTML字符串可能为客户端解析响应信息节省了一些Javascript脚本&#xff0c;但是也带来了一些问题&#xff1a;
- 响应信息中包含大量无用的字符&#xff0c;响应数据会变得臃肿。因为HTML标记不含有 任何信息&#xff0c;完全可以把它们放置在客户端由Javascript脚本负责生成。
- 响应信息中包含的HTML结构无法有效利用&#xff0c;对于Javascript脚本来说&#xff0c;它们仅仅是一堆字符串。同时结构和信息混合在一起&#xff0c;也不符合标准设计模式。
获取Javascript脚本
可以设计响应信息为Javascript代码&#xff0c;这里的代码与JSON数据不同&#xff0c;它是可以执行的命令或脚本。
示例&#xff1a;指定服务器端的JS函数
<h1>AJAX测试</h1><button id&#61;"btn" value&#61;"btn" onclick&#61;"f()">按钮</button><script>function f() {var ajax &#61; createXMLHTTPObject();ajax.onreadystatechange &#61; function(){if(ajax.readyState &#61;&#61; 4 && ajax.status &#61;&#61; 200){var info &#61; ajax.responseText;var o &#61; eval("(" &#43; info &#43; ")" &#43; "()");alert(o);}}ajax.open("get", "response.js",true);ajax.send();}</script>
response.js:
function (){var d &#61; new Date();return d.toString();
}
点击按钮&#xff0c;弹出提示信息&#xff1a;
注意&#xff1a;在转换时应在字符串签后附加两个小括号&#xff1a;一个包含函数结构体、一个是表示调用函数的。一般很少使用Javascript代码作为响应信息的格式&#xff0c;因为它不能传递更丰富的信息&#xff0c;同时Javascript脚本容易引发安全隐患。