用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 相关文章推荐
JavaScript高级程序设计 事件学习笔记
Sep 10 Javascript
javascript中apply和call方法的作用及区别说明
Feb 14 Javascript
三种动态加载js的jquery实例代码另附去除js方法
Apr 30 Javascript
jQuery中prop()方法用法实例
Jan 05 Javascript
jQuery使用CSS()方法给指定元素同时设置多个样式
Mar 26 Javascript
Js+php实现异步拖拽上传文件
Jun 23 Javascript
JavaScript的字符串方法汇总
Jul 31 Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
Jan 16 Javascript
基于复选框demo(分享)
Sep 27 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
Dec 07 Javascript
vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解
Sep 21 Javascript
k8s node节点重新加入master集群的实现
Feb 22 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
全国FM电台频率大全 - 7 吉林省
2020/03/11 无线电
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
2014/04/25 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
2015/10/09 PHP
【消息提示组件】,兼容IE6/7&amp;&amp;FF2
2007/09/04 Javascript
Prototype Object对象 学习
2009/07/12 Javascript
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
js 实现日期灵活格式化的小例子
2013/07/14 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
window.showModalDialog()返回值的学习心得总结
2014/01/07 Javascript
js定时器(执行一次、重复执行)
2014/03/07 Javascript
javascript的动态加载、缓存、更新以及复用(一)
2014/06/09 Javascript
Angularjs制作简单的路由功能demo
2015/04/14 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
2015/11/24 Javascript
jQuery实现的自定义弹出层效果实例详解
2016/09/04 Javascript
原生js实现放大镜效果
2017/01/11 Javascript
初识 Vue.js 中的 *.Vue文件
2017/11/22 Javascript
Vue cli构建及项目打包以及出现的问题解决
2018/08/27 Javascript
微信小程序云开发之使用云存储
2019/05/17 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
2019/08/12 Javascript
javascript使用Blob对象实现的下载文件操作示例
2020/04/18 Javascript
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
在Python中通过getattr获取对象引用的方法
2019/01/21 Python
Python实现蒙特卡洛算法小实验过程详解
2019/07/12 Python
PyTorch预训练的实现
2019/09/18 Python
python多线程高级锁condition简单用法示例
2019/11/07 Python
解决Pytorch训练过程中loss不下降的问题
2020/01/02 Python
python对文件的操作方法汇总
2020/02/28 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
2020/03/23 Python
python中执行smtplib失败的处理方法
2020/07/01 Python
python 使用tkinter+you-get实现视频下载器
2020/11/17 Python
从零实现一个自定义html5播放器的示例代码
2017/08/01 HTML / CSS
公司贷款承诺书
2014/05/30 职场文书
校园主题婚礼活动策划方案
2014/09/15 职场文书
结婚主持人致辞
2015/07/28 职场文书
2016婚礼主持词开场白
2015/11/24 职场文书