用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 相关文章推荐
json-lib出现There is a cycle in the hierarchy解决办法
Feb 24 Javascript
JavaScript通过正则表达式实现表单验证电话号码
Mar 07 Javascript
jQuery DOM删除节点操作指南
Mar 03 Javascript
BootStrap智能表单实战系列(七)验证的支持
Jun 13 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
Jul 01 Javascript
JS简单实现tab切换效果的多窗口显示功能
Sep 07 Javascript
js实现方块上下左右移动效果
Aug 17 Javascript
不得不看之JavaScript构造函数及new运算符
Aug 21 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
Oct 20 Javascript
JS简单生成由字母数字组合随机字符串示例
May 25 Javascript
JS二级菜单不同实现方法分析【4种方法】
Dec 21 Javascript
微信小程序日历组件使用方法详解
Dec 29 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
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
php 中文处理函数集合
2008/08/27 PHP
PHP添加Xdebug扩展的方法
2014/02/12 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
2014/05/10 PHP
理解PHP中的Session及对Session有效期的控制
2016/01/08 PHP
PHP类和对象相关系统函数与运算符小结
2016/09/28 PHP
php实现评论回复删除功能
2017/05/23 PHP
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
javascript+xml实现简单图片轮换(只支持IE)
2012/12/23 Javascript
自制的文件上传JS控件可支持IE、chrome、firefox etc
2014/04/18 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
2014/06/07 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
2015/03/02 Javascript
ECMAScript6中Map/WeakMap详解
2015/06/12 Javascript
基于JavaScript Array数组方法(新手必看篇)
2016/08/20 Javascript
Node.js检测端口(port)是否被占用的简单示例
2016/09/29 Javascript
AngularJS ng-repeat数组有重复值的解决方法
2016/10/23 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
2017/09/18 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
2018/06/07 Javascript
JS实现倒序输出的几种常用方法示例
2019/04/13 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
python进阶教程之函数对象(函数也是对象)
2014/08/30 Python
python django使用haystack:全文检索的框架(实例讲解)
2017/09/27 Python
Python获取Redis所有Key以及内容的方法
2019/02/19 Python
python自动化UI工具发送QQ消息的实例
2019/08/27 Python
一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
2020/07/03 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
2020/07/30 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
2021/01/08 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
CSS3中Animation属性的使用详解
2015/08/06 HTML / CSS
Chicco婴儿用品美国官网:汽车座椅、婴儿推车、高脚椅等
2018/11/05 全球购物
劳动竞赛活动总结
2014/05/05 职场文书
2014年高二班主任工作总结
2014/12/16 职场文书
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS
pytorch常用数据类型所占字节数对照表一览
2021/05/17 Python
MySQL 中如何归档数据的实现方法
2022/03/16 SQL Server
Java字符串逆序方法详情
2022/03/21 Java/Android