用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的一些总结
Nov 03 Javascript
Javascript异步表单提交,图片上传,兼容异步模拟ajax技术
May 10 Javascript
js函数的引用, 关于内存的开销
Sep 17 Javascript
jquery JSON的解析方式示例介绍
Jul 27 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
Oct 12 Javascript
plupload+artdialog实现多平台上传文件
Jul 19 Javascript
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
Jun 16 Javascript
JS实现table表格固定表头且表头随横向滚动而滚动
Oct 26 Javascript
vue 基于element-ui 分页组件封装的实例代码
Dec 10 Javascript
微信小程序HTTP接口请求封装的实现
Feb 21 Javascript
使用koa2创建web项目的方法步骤
Mar 12 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
Oct 10 jQuery
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
php pack与unpack 摸板字符字符含义
2009/10/29 PHP
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
PHP+MySQL删除操作实例
2015/01/21 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
2016/02/23 PHP
thinkPHP和onethink微信支付插件分享
2019/08/11 PHP
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2012/01/03 Javascript
jQuery 快速结束当前正在执行的动画
2013/11/20 Javascript
jquery和javascript中如何将一元素的内容赋给另一元素
2014/01/09 Javascript
Winform客户端向web地址传参接收参数的方法
2016/05/17 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
2016/06/28 Javascript
WEB开发之注册页面验证码倒计时代码的实现
2016/12/15 Javascript
BootStrap表单控件之复选框checkbox和单选择按钮radio
2017/05/23 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
详解Vue的七种传值方式
2021/02/08 Vue.js
Python提取Linux内核源代码的目录结构实现方法
2016/06/24 Python
Python实现Smtplib发送带有各种附件的邮件实例
2017/06/05 Python
Python中执行存储过程及获取存储过程返回值的方法
2017/10/07 Python
PyCharm 常用快捷键和设置方法
2017/12/20 Python
python实现简单淘宝秒杀功能
2018/05/03 Python
python中sort和sorted排序的实例方法
2019/08/26 Python
python函数修饰符@的使用方法解析
2019/09/02 Python
Python如何实现远程方法调用
2020/08/07 Python
python中threading和queue库实现多线程编程
2021/02/06 Python
html5中 media(播放器)的api使用指南
2014/12/26 HTML / CSS
浅谈html5标签css3的常用样式
2016/10/20 HTML / CSS
如果一个类实现了多个接口但是这些接口有相同的方法名将会怎样
2013/06/16 面试题
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
《飞向蓝天的恐龙》教学反思
2014/04/09 职场文书
敬老院献爱心活动总结
2014/07/08 职场文书
新闻专业毕业生求职信
2014/08/08 职场文书
班子群众路线教育实践个人对照检查材料思想汇报
2014/09/30 职场文书
2014年合同管理工作总结
2014/12/02 职场文书
捐助倡议书
2015/01/19 职场文书
廉洁自律个人总结
2015/02/14 职场文书
学校国庆节活动总结
2015/03/23 职场文书
python自动统计zabbix系统监控覆盖率的示例代码
2021/04/03 Python