首先感谢您的关注,自己搞了一个晚上解决不了。未简化代码,特别将出问题的地方重新写了两个网页。
废话不说,上代码:用来删除返回网页其他部分的js代码del_body.js:
// JavaScript Document
function del_body(str){//消除异步通讯返回来网页中<body>以外的代码
var a1,a2
str=unescape(str);
a1=str.indexOf("<body>")+6;
a2=str.indexOf("</body>")-2;
return str.substring(a1,a2);
}异步应答网页test_char.asp,纯粹就是返回一个字母"a":
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>返回字符以作比较</title>
</head><body>
<%= response.Write("a") %>
</body>
</html>发起异步网页test_char_compare.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<script type="text/javascript" src="../Scripts/del_body.js"></script>
<script type="text/javascript">
var xmlHttp=false;
try {
xmlHttp=new XMLHttpRequest();
} catch (trymicrosoft){
try {
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft){
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
} catch(failed){
xmlHttp=false;
}
}
}
if (!xmlHttp)
alert("经测试,您的计算机不能应用异步数据(ajax)技术。");
function change() {//响应罪犯姓名更换
var url = "test_char.asp";//建立异步通讯所需要的连接字符串
xmlHttp.open("POST",url,true);//设置异步通讯方式为GET(也可以为POST或者HEAD),表明连接目标url,异步通讯为真
xmlHttp.onreadystatechange = test_record;
xmlHttp.send(null);//发出异步通讯
}function test_record(){
var x1;
if (xmlHttp.readyState == 4 )//如果服务器响应完成
if (xmlHttp.status==200){//如果返回状态码等于200,表明按预定目标顺利完成,没有意外
x1=del_body(xmlHttp.responseText);
alert(x1);//显示返回内容
alert(typeof(x1));//测试返回内容类型,怕不一致
alert(typeof("a"));//测试需要与之比较的类型,怕不一致
if (x1=="a")
document.getElementById("display_name").innerHTML="返回的字母是a";
else
document.getElementById("display_name").innerHTML="返回的字母不是a";
}
else if (xmlHttp.status == 404)//返回码为404,即没有找到制定响应网页目标
alert("没有找到指定的处理网页,执行未能正常执行。");
else
alert("服务器错误:错误代码:" + xmlHttp.status);
}
</script>>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<p id="display_name" >测试异步通讯返回的值</p>
<input name="test" type="button" value="发起测试" onclick="change()"/>
</body>
</html>结果很奇怪,测试显示返回a,类型string;准备与之比较的类型也是string,但是if语句始终比较不成立,跳到“返回的字母不是a”,折腾了很久都没有解决。请大家帮忙看看。谢谢!!!
废话不说,上代码:用来删除返回网页其他部分的js代码del_body.js:
// JavaScript Document
function del_body(str){//消除异步通讯返回来网页中<body>以外的代码
var a1,a2
str=unescape(str);
a1=str.indexOf("<body>")+6;
a2=str.indexOf("</body>")-2;
return str.substring(a1,a2);
}异步应答网页test_char.asp,纯粹就是返回一个字母"a":
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>返回字符以作比较</title>
</head><body>
<%= response.Write("a") %>
</body>
</html>发起异步网页test_char_compare.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<script type="text/javascript" src="../Scripts/del_body.js"></script>
<script type="text/javascript">
var xmlHttp=false;
try {
xmlHttp=new XMLHttpRequest();
} catch (trymicrosoft){
try {
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft){
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
} catch(failed){
xmlHttp=false;
}
}
}
if (!xmlHttp)
alert("经测试,您的计算机不能应用异步数据(ajax)技术。");
function change() {//响应罪犯姓名更换
var url = "test_char.asp";//建立异步通讯所需要的连接字符串
xmlHttp.open("POST",url,true);//设置异步通讯方式为GET(也可以为POST或者HEAD),表明连接目标url,异步通讯为真
xmlHttp.onreadystatechange = test_record;
xmlHttp.send(null);//发出异步通讯
}function test_record(){
var x1;
if (xmlHttp.readyState == 4 )//如果服务器响应完成
if (xmlHttp.status==200){//如果返回状态码等于200,表明按预定目标顺利完成,没有意外
x1=del_body(xmlHttp.responseText);
alert(x1);//显示返回内容
alert(typeof(x1));//测试返回内容类型,怕不一致
alert(typeof("a"));//测试需要与之比较的类型,怕不一致
if (x1=="a")
document.getElementById("display_name").innerHTML="返回的字母是a";
else
document.getElementById("display_name").innerHTML="返回的字母不是a";
}
else if (xmlHttp.status == 404)//返回码为404,即没有找到制定响应网页目标
alert("没有找到指定的处理网页,执行未能正常执行。");
else
alert("服务器错误:错误代码:" + xmlHttp.status);
}
</script>>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<p id="display_name" >测试异步通讯返回的值</p>
<input name="test" type="button" value="发起测试" onclick="change()"/>
</body>
</html>结果很奇怪,测试显示返回a,类型string;准备与之比较的类型也是string,但是if语句始终比较不成立,跳到“返回的字母不是a”,折腾了很久都没有解决。请大家帮忙看看。谢谢!!!
解决方案 »
- 如何伪造js中的document.referrer
- 请问高手广告条 与 导航怎么对齐,怎么修改通过js代码实现
- Using('System.Web.Forms.MzBehavior');如何激活该事件!
- 为什么WINDOW。STATUS = ‘AA’;不能改变状态栏
- 为什么设置不了DIV中的white-space
- 如何在WEB里一直按住一个按钮,让文本框里的数字持续自增???谢谢啦
- 大侠请教个问题关于父子窗口的
- 在netscape4.7下编码为什么这样
- 请问怎么能够取到iCloud页面中的背景动画图片?
- json数据从action中传到前台页面的问题
- onload
- 首页添加如下JS文件,作用是什么?
<script type="text/javascript">
function del_body(str){//消除异步通讯返回来网页中<body>以外的代码
var a1,a2
str=unescape(str);
a1=str.indexOf("<body>")+6+1;
a2=str.indexOf("</body>")-2+1;
return str.substring(a1,a2);
}
alert( del_body( "<body>a</body>") );
</script>
x1=x1.repalce(/ /g,"")
x1=x1.repalce(/\n/g,"")
有空格、换行等字符
你把test_char_compare.html中的JS脚本放到
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
下面来,同时顶部最好加:<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
===============================如果还不可以,你改用GB2312,同时test_char.asp修改为简单的:
<%
Response.CharSet ="gbk"
response.Write("a")%>
再看看。
你把test_char_compare.html中的JS脚本放到
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
下面来,同时顶部最好加:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
Response.CharSet="UTF-8"
%>
wqkjj:您的说法不正确,因为这段代码我已经反复用过很多次了,从来没有出现过问题,如果想您说的那样,那么,alert(x1)就会把body显示出来,不过谢谢你的关心;
toury:按您的解决办法,问题依旧,不过可能是我还没有完全按您的方法来解决;
Free_Wind22、net_lover:正解,按照两位的方法处理,结果都合乎要求。不过搞不清楚,为什么alert显示没有出现空格等字符呢?我马上测试一下字符长度看看。
再次感谢各位,马上给分(不好意思,分太少了)
用来删除返回网页其他部分的js代码del_body.js:
// JavaScript Document
function del_body(str){//消除异步通讯返回来网页中<body>以外的代码
var a1,a2
str=unescape(str);
a1=str.indexOf("<body>")+6;
a2=str.indexOf("</body>"); //匹配到就可以了,不用-2
return str.substring(a1,a2);
}