用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中的this指针
Mar 18 Javascript
一款js和css代码压缩工具[附JAVA环境配置方法]
Apr 16 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
Oct 17 Javascript
JavaScript生成的动态下雨背景效果实现方法
Feb 25 Javascript
JavaScript 模块化编程(笔记)
Apr 08 Javascript
js return返回多个值,通过对象的属性访问方法
Feb 21 Javascript
vue使用stompjs实现mqtt消息推送通知
Jun 22 Javascript
Vue框架下引入ActiveX控件的问题解决
Mar 25 Javascript
vue实现微信分享链接添加动态参数的方法
Apr 29 Javascript
彻底揭秘keep-alive原理(小结)
May 05 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
Apr 10 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
Jul 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
PHP初学入门
2006/11/19 PHP
解析php php_openssl.dll的作用
2013/07/01 PHP
PHP 验证身份证是否合法的函数
2017/02/09 PHP
ThinkPHP5&amp;5.1框架关联模型分页操作示例
2019/08/03 PHP
新页面打开实际尺寸的图片
2006/08/25 Javascript
javascript 无提示关闭窗口脚本
2009/08/17 Javascript
jquery实现的一个导航滚动效果具体代码
2013/05/27 Javascript
使用javascript为网页增加夜间模式
2014/01/26 Javascript
用Move.js配合创建CSS3动画的入门指引
2015/07/22 Javascript
基于Flowplayer打造一款免费的WEB视频播放器附源码
2015/09/06 Javascript
jquery实现简单的二级导航下拉菜单效果
2015/09/07 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
2015/09/16 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
JavaScript实现广告弹窗效果
2016/08/09 Javascript
通过JS获取Request.QueryString()参数的值实现方法
2016/09/27 Javascript
深入理解基于vue-cli的vuex配置
2017/07/24 Javascript
使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能
2017/11/27 Javascript
浅析js实现网页截图的两种方式
2019/11/01 Javascript
使用python实现语音文件的特征提取方法
2019/01/09 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
2020/03/30 Python
Django获取model中的字段名和字段的verbose_name方式
2020/05/19 Python
基于python实现模拟数据结构模型
2020/06/12 Python
Python爬虫教程知识点总结
2020/10/19 Python
详解window.open被浏览器拦截的解决方案
2019/07/18 HTML / CSS
使用canvas来完成线性渐变和径向渐变的功能的方法示例
2019/07/25 HTML / CSS
ziaja齐叶雅官方海外旗舰店:来自波兰的天然护肤品牌
2017/01/02 全球购物
Notino芬兰:购买香水和化妆品
2019/04/15 全球购物
二手书店创业计划书
2014/01/16 职场文书
大学生旅游业创业计划书
2014/01/29 职场文书
农民工工资承诺书范文
2014/03/31 职场文书
校园环保标语
2014/06/13 职场文书
小学生毕业评语
2014/12/26 职场文书
施工员岗位职责
2015/02/10 职场文书
幼儿园教师节活动总结
2015/03/23 职场文书
中学感恩教育活动总结
2015/05/05 职场文书
React Fragment介绍与使用详解
2021/11/11 Javascript