问题描述
问题在注释中。谢谢!<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><script language="javascript">function doCaculate() {var f = document.form1;if ((f.number_1.value != "") && (f.number_2.value != "")) {document.getElementById("feedback").innerHTML = "正在计算,请稍候...";send_request("process.jsp?number_1="+f.number_1.value+ "&number_2="+f.number_2.value);}else if (f.number_1.value == "") {document.getElementById("feedback").innerHTML = "乘数不能为空。";}else if (f.number_2.value == "") {document.getElementById("feedback").innerHTML = "被乘数不能未空。";}}var http_request = false;function send_request(url) {http_request = false;if (window.XMLHttpRequest) {http_request = new XMLHttpRequest();if (http_request.overrideMimeType) {http_request.overrideMimeType('text/xml');}}else if (window.ActiveXObject) {try {http_request = new ActiveXObject("Msxml2.XMLHttp");}catch (e) {try {http_request = new ActiveXObject("Microsoft.XMLHTTP");}catch (e) {}}}if (!http_request) {window.alert("不能创建XMLHttpRequest对象实例.");return false;}http_request.onreadystatechange = processRequest;http_request.open("GET", url, true);http_request.send(null);}function processRequest() {var f = document.form1;if (http_request.readyState == 4) {if (http_request.status == 200) {var returnStr = http_request.responseText;if (returnStr.indexOf("Error") == -1) {alert(returnStr); // 这儿得到returnStr怎么是html?还要自己解析才能等得到计算值吗?document.getElementById("feedback").innerHTML = returnStr;f.result.value = returnStr;}else {f.result.value = "";document.getElementById("feedback").innerHTML = returnStr;}}else {alert(http_request.status);alert("您所请求的页面有异常.");}}}</script></head><body><form action="process.jsp" method="post" enctype="application/x-www-form-urlencoded" name="form1" target="_self"> <table width="400" cellpadding="4" cellspacing="1" border="0"> <caption>简单乘法计算</caption> <tr> <td align="center"> <input type="text" name="number_1" size="10"> * <input type="text" name="number_2" size="10"> = <input type="text" name="result" size="10"> </td> </tr> <tr align="center"> <td> <input type="button" name="Caculate" value="开始计算" onClick="doCaculate()"> <input type="reset" name="reset" value="重新计算"> </td> </tr> <tr><td align="center" height="25"><label id="feedback"> xx</label></td> </tr> </table> </body></html><%@ page language="java" contentType="text/html; charset=gb2312" pageEncoding="gb2312"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>Insert title here</title></head><body><% String number_1 = request.getParameter("number_1");String number_2 = request.getParameter("number_2");int num_1 = 0, num_2 = 0;boolean status = true;if (number_1 != null) {try {num_1 = Integer.parseInt(number_1);}catch (Exception ex) {status = false;out.println("Error,乘数必须是整数.");}}if (number_2 != null) {try {num_2 = Integer.parseInt(number_2);}catch (Exception ex) {status = false;out.println("Error,被乘数必须是整数.");}}if (status) out.println(num_1*num_2);%></body></html>
解决方案
这里的Ajax请求得到的响应文本,是执行完JSP之后所返回的html代码,所以你的JSP页面整体输出什么,它的值就是什么。由于你的页面中包含的<html>、<body>等标签,所以返回的页面中同样也包含了这些标签,输出的值自然就是html了。若只想得到结果,只要保留JSP页面的这一部份就好了:<%@ page language="java" contentType="text/html;charset=gb2312" pageEncoding="gb2312"%><% String number_1 = request.getParameter("number_1");String number_2 = request.getParameter("number_2");int num_1 = 0, num_2 = 0;boolean status = true;if (number_1 != null) {try {num_1 = Integer.parseInt(number_1);}catch (Exception ex) {status = false;out.println("Error,乘数必须是整数.");}}if (number_2 != null) {try {num_2 = Integer.parseInt(number_2);}catch (Exception ex) {status = false;out.println("Error,被乘数必须是整数.");}}if (status) out.println(num_1*num_2);%>