用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 相关文章推荐
Fastest way to build an HTML string(拼装html字符串的最快方法)
Aug 20 Javascript
可选择和输入的下拉列表框示例
Nov 05 Javascript
jquery控制select的text/value值为选中状态
Jun 03 Javascript
浅析JavaScript 调试方法和技巧
Oct 22 Javascript
javascript html实现网页版日历代码
Mar 08 Javascript
js时间戳格式化成日期格式的多种方法介绍
Feb 16 Javascript
简单实现js点击展开二级菜单功能
May 16 Javascript
解决ztree搜索中多级菜单展示不全问题
Jul 05 Javascript
详解webpack编译多页面vue项目的配置问题
Dec 11 Javascript
基于vue2.x的电商图片放大镜插件的使用
Jan 22 Javascript
浅谈React高阶组件
Mar 28 Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
May 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
根德Grundig S400/S500/S700电路分析
2021/03/02 无线电
用PHP查询域名状态whois的类
2006/11/25 PHP
解析php mysql 事务处理回滚操作(附实例)
2013/08/05 PHP
ecshop 2.72如何修改后台访问地址
2015/03/03 PHP
php微信开发之图片回复功能
2018/06/14 PHP
一个无限级XML绑定跨框架菜单(For IE)
2007/01/27 Javascript
JavaScript 输入框内容格式验证代码
2010/02/11 Javascript
用jquery模仿的a的title属性(兼容ie6/7)
2013/01/21 Javascript
jQuery使用一个按钮控制图片的伸缩实现思路
2013/04/19 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
2016/06/20 Javascript
防止Node.js中错误导致进程阻塞的办法
2016/08/11 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
JavaScript中字符串的常用操作方法及特殊字符
2018/03/18 Javascript
Vue实现移动端左右滑动效果的方法
2018/11/27 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
微信小程序学习总结(四)事件与冒泡实例分析
2020/06/04 Javascript
[42:27]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第三局
2016/03/05 DOTA
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python操作MongoDB数据库的方法示例
2018/01/04 Python
详解TensorFlow在windows上安装与简单示例
2018/03/05 Python
pyhton列表转换为数组的实例
2018/04/04 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
2019/01/29 Python
基于python检查矩阵计算结果
2020/05/21 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
2021/03/01 Python
JDK安装目录下有哪些内容
2014/08/25 面试题
咖啡蛋糕店创业计划书
2014/01/28 职场文书
医院深入开展党的群众路线教育实践活动实施方案
2014/08/27 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
捐助倡议书
2015/01/19 职场文书
Python激活Anaconda环境变量的详细步骤
2021/06/08 Python
Vue3.0 手写放大镜效果
2021/07/25 Vue.js
python如何将mat文件转为png
2022/07/15 Python