用js来解决ajax读取页面乱码


Posted in Javascript onNovember 28, 2010

例子:
rsajax.js:

var http_request = false; 
function makePOSTRequest(url, parameters) { 
http_request = false; 
if (window.XMLHttpRequest) { 
http_request = new XMLHttpRequest(); 
if (http_request.overrideMimeType) { 
http_request.overrideMimeType('text/html'); 
} 
} 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) { 
alert('Cannot create XMLHTTP instance'); 
return false; 
} 
http_request.onreadystatechange = alertContents; 
http_request.open('POST', url, true); 
http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
//http_request.setRequestHeader("Content-Type","application/text/html; charset:utf-8"); 
http_request.setRequestHeader("Content-length", parameters.length); 
http_request.setRequestHeader("Connection", "close"); 
if(!Sys.ie){ 
http_request.overrideMimeType("text/html;charset=gb2312"); 
} 
http_request.send(parameters); 
} 
function alertContents() { 
if (http_request.readyState == 4) { 
if (http_request.status == 200) { 
if(Sys.ie){ 
result = http_request.responseBody; 
} 
else 
{ 
result = http_request.responseText; 
} 
//newresult=result.replace(/[^\u0000-\u00FF]/g,function($0){return escape($0).replace(/(%u)(\w{4})/gi,"&#x$2;")}); 
//newreslt=unescape(result.replace(/&#x/g,'%u').replace(/;/g,'')); //utf-8和汉字互转,不需要了 
document.getElementById('waiting').innerHTML = ''; 
if(Sys.ie){ 
document.getElementById('showresults').innerHTML =gb2utf8(result); } 
else{ 
document.getElementById('showresults').innerHTML =result; 
} 
} else { 
alert('There was a problem with the request.'); 
} 
}else{ 
document.getElementById('waiting').innerHTML = '<img src="loading.gif">';} 
} 
function get(obj) { 
//var poststr = "accounts=" + encodeURI( document.getElementById("accounts").value ); 
makePOSTRequest('y.htm', ''); 
} 
//ie引入一个杂交函数,nndx 
function gb2utf8(data){ 
var glbEncode = []; 
gb2utf8_data = data; 
execScript("gb2utf8_data = MidB(gb2utf8_data, 1)", "VBScript"); 
var t=escape(gb2utf8_data).replace(/%u/g,"").replace(/(.{2})(.{2})/g,"%$2%$1").replace(/%([A-Z].)%(.{2})/g,"@$1$2"); 
t=t.split("@"); 
var i=0,j=t.length,k; 
while(++i<j) { 
k=t[i].substring(0,4); 
if(!glbEncode[k]) { 
gb2utf8_char = eval("0x"+k); 
execScript("gb2utf8_char = Chr(gb2utf8_char)", "VBScript"); 
glbEncode[k]=escape(gb2utf8_char).substring(1,6); 
} 
t[i]=glbEncode[k]+t[i].substring(4); 
} 
gb2utf8_data = gb2utf8_char = null; 
return unescape(t.join("%")); 
} 
var Sys = {}; 
var ua = navigator.userAgent.toLowerCase(); 
if (window.ActiveXObject) 
Sys.ie = ua.match(/msie ([\d.]+)/)[1] 
else if (document.getBoxObjectFor) 
Sys.firefox = ua.match(/firefox\/([\d.]+)/)[1] 
else if (window.MessageEvent && !document.getBoxObjectFor) 
Sys.chrome = ua.match(/chrome\/([\d.]+)/)[1] 
else if (window.opera) 
Sys.opera = ua.match(/opera.([\d.]+)/)[1] 
else if (window.openDatabase) 
Sys.safari = ua.match(/version\/([\d.]+)/)[1];

index.php
<!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=gb2312" /> 
<title></title> 
<script type="text/javascript" language="javascript" src="rsajax.js"></script> 
<HEAD> 
</head> 
<body> 
<div align="center"> 
<input onclick="javascript:get(document.getElementById('acctform'));" name="acctform" id="acctform" type=button> 
<div align="center"> 
<div id="waiting"></div> 
<p> 
<div id="showresults"></div> 
</div> 
<BR> 
<body></html>

y.htm
我们大家一起来,嘿嘿
Javascript 相关文章推荐
深入分析js中的constructor和prototype
Apr 07 Javascript
node.js中的forEach()是同步还是异步呢
Jan 29 Javascript
简介JavaScript中getUTCMonth()方法的使用
Jun 10 Javascript
jQuery侧边栏实现代码
May 06 Javascript
Javascript实现倒计时(防页面刷新)实例
Dec 13 Javascript
jQuery日期范围选择器附源码下载
May 23 jQuery
JS如何设置元素样式的方法示例
Aug 28 Javascript
微信小程序下拉框功能的实例代码
Nov 06 Javascript
node.js微信小程序配置消息推送的实现
Feb 13 Javascript
深入理解令牌认证机制(token)
Aug 22 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
Oct 28 Javascript
JavaScript声明变量和数据类型的转换
Apr 12 Javascript
window.name代替cookie的实现代码
Nov 28 #Javascript
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
Nov 28 #Javascript
一个网马的tips实现分析
Nov 28 #Javascript
JQUBAR1.1 jQuery 柱状图插件发布
Nov 28 #Javascript
为jQuery增加join方法的实现代码
Nov 28 #Javascript
Jquery拖拽并简单保存的实现代码
Nov 28 #Javascript
jquery下将选择的checkbox的id组成字符串的方法
Nov 28 #Javascript
You might like
一个改进的UBB类
2006/10/09 PHP
php 中文字符入库或显示乱码问题的解决方法
2010/04/12 PHP
PHP读取Excel类文件
2017/05/15 PHP
thinkPHP3.2.2框架行为扩展及demo示例
2018/06/19 PHP
Gambit vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
JavaScript 常用函数库详解
2009/10/21 Javascript
JavaScript 入门基础知识 想学习js的朋友可以参考下
2009/12/26 Javascript
javascript两段代码,两个小技巧
2010/02/04 Javascript
JS给超链接加确认对话框的方法
2015/02/24 Javascript
nodejs中的fiber(纤程)库详解
2015/03/24 NodeJs
纯js实现仿QQ邮箱弹出确认框
2015/04/29 Javascript
初识angular框架后的所思所想
2016/02/19 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
jQuery模拟下拉框选择对应菜单的内容
2017/03/07 Javascript
NodeJS处理Express中异步错误
2017/03/26 NodeJs
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
微信小程序实现的动态设置导航栏标题功能示例
2019/01/31 Javascript
你不知道的SpringBoot与Vue部署解决方案
2020/11/09 Javascript
Python实现的科学计算器功能示例
2017/08/04 Python
python中字符串变二维数组的实例讲解
2018/04/03 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
2019/12/09 Python
Python正则表达式如何匹配中文
2020/05/27 Python
Python requests模块安装及使用教程图解
2020/06/30 Python
浅谈python 类方法/静态方法
2020/09/18 Python
中专毕业生的自我鉴定
2013/12/01 职场文书
创业计划书的主要内容有哪些
2014/01/29 职场文书
火锅店营销方案
2014/02/26 职场文书
财产公证书格式
2014/04/10 职场文书
白血病募捐倡议书
2014/05/14 职场文书
乐观自信演讲稿范文
2014/05/21 职场文书
python实现监听键盘
2021/04/26 Python
十大最强格斗系宝可梦,超梦X仅排第十,第二最重格斗礼仪
2022/03/18 日漫
电脑只能进入安全模式无法正常启动的解决办法
2022/04/08 数码科技
python使用pycharm安装pyqt5以及相关配置
2022/04/22 Python
Python开发五子棋小游戏
2022/04/28 Python