日期:2014-05-18  浏览次数:20805 次

ajax 获得的result字符串中总是有18个空格,不知道为什么
我在a.jsp中用ajax 调用b.jsp ,然后b.jsp返回给a.jsp 一个字符串“no” ,可是在a.jsp 中alert()该字符串,后边多了18个空格,不知道为什么!!两个jsp的主要代码如下:

a.jsp:

/*ajax 验证是否可以修改*/
var xmlhttp;
//分辨浏览器,获取XMLHttpRequest对象
function create(){
if(window.XMLHttpRequest){
//IE7,IE8,火狐,傲游
xmlhttp = new XMLHttpRequest();
} else if(window.ActiveXObject){
//IE5,IE6,360?
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}

function check(){
create();
//根据xmlhttp对象的状态,调用回调函数
xmlhttp.onreadystatechange = callback;
//建立与服务器端的连接 : 提交的方式,提交目标的地址,是否使用异步机制
xmlhttp.open("GET","b.jsp?random="+Math.random(),true);

xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

//发送数据
xmlhttp.send(null);
}

function callback(){
//如果xmlhttp对象的状态为4,则运行下面的程序
if(xmlhttp.readyState == 4){
//响应的数据是否正确  status响应码
if(xmlhttp.status == 200){
//获取xmlhttp响应结果  二种:responseText:字符串   responseXML:xml文档   JSON
var result = xmlhttp.responseText;
alert(result + result.length);

}
}
}


b.jsp:

<%@page contentType="text/html; charset=GBK" %>
<%@page import="java.io.PrintWriter"%>
<%
//设置响应报头
response.setContentType("text/html;charset=GBK");
//获取输出对象
PrintWriter out2 = response.getWriter();

out2.print("no");
%>


运行程序最后在a.jsp页面的显示对话框如下


如果我把b.jsp的内容改成

<%
out.print("no");
%>

则返回的字符串所含空格数会变小,如下图


经过我实验,发现返回的字符串里所含的空格的多少和b.jsp里面的内容多少有关,内容越多空格越多,反之内容越少空格越少,但是空格数不会变为0,最小变成了8,这是为什么啊?还请大仙们给解释下~
Ajax Ajax获得返回值异常

------解决方案--------------------

<%@page contentType="text/html; charset=GBK" %>