用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 Object.extend
May 18 Javascript
jquery带下拉菜单和焦点图代码分享
Aug 24 Javascript
jquery单击文字或图片内容放大并居中显示
Jun 23 jQuery
微信小程序开发背景图显示功能
Aug 08 Javascript
react+ant design实现Table的增、删、改的示例代码
Dec 27 Javascript
js控制随机数生成概率代码实例
Mar 21 Javascript
微信小程序自定义导航栏实例代码
Apr 05 Javascript
vue.js 2.*项目环境搭建、运行、打包发布的详细步骤
May 01 Javascript
layui表格内放置图片,并点击放大的实例
Sep 10 Javascript
解决layui的form里的元素进行动态生成,验证失效的问题
Sep 14 Javascript
使用Vue实现调用接口加载页面初始数据
Oct 28 Javascript
一分钟学会JavaScript中的try-catch
Dec 14 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
提高PHP编程效率的53个要点(经验小结)
2010/09/04 PHP
通达OA公共代码 php常用检测函数
2011/12/14 PHP
php获取本周星期一具体日期的方法
2015/04/20 PHP
PHP使用HTML5 FormData对象提交表单操作示例
2019/07/02 PHP
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
2007/12/23 Javascript
Document对象内容集合(比较全)
2010/09/06 Javascript
自制基于jQuery的智能提示插件一枚
2011/02/18 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
2012/07/24 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
JS实现清除指定cookies的方法
2014/09/20 Javascript
浅谈javascript中基本包装类型
2015/06/03 Javascript
jquery仿百度百科底部浮动导航特效
2015/08/08 Javascript
javascript跨域的方法汇总
2015/10/23 Javascript
Vue.js每天必学之数据双向绑定
2016/09/05 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
jquery仿苹果的时间/日期选择效果
2017/03/08 Javascript
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
node运行js获得输出的三种方式示例详解
2020/07/02 Javascript
Vertx基于EventBus发送接受自定义对象
2020/11/16 Javascript
浅谈MySQL中的触发器
2015/05/05 Python
浅谈python函数之作用域(python3.5)
2017/10/27 Python
使用python为mysql实现restful接口
2018/01/05 Python
python批量识别图片指定区域文字内容
2019/04/30 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
2019/09/24 Python
python 实现一个简单的线性回归案例
2020/12/17 Python
巴西儿童时尚购物网站:Dinda
2019/08/14 全球购物
100%法国制造的游戏和玩具:Les Jouets Français
2021/03/02 全球购物
Java面向对象面试题
2016/12/26 面试题
教师档案管理制度
2014/01/23 职场文书
城建学院毕业生自荐信
2014/01/31 职场文书
二年级学生期末评语
2014/12/26 职场文书
红白喜事主持词
2015/07/06 职场文书
2016年第32个教师节红领巾广播稿
2015/12/18 职场文书
goland 恢复已更改文件的操作
2021/04/28 Golang
dubbo服务整合zipkin详解
2021/07/26 Java/Android
MySQL数据库索引的最左匹配原则
2021/11/20 MySQL