用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 相关文章推荐
IE event.srcElement和FF event.target 功能比较
Mar 01 Javascript
jQuery性能优化28条建议你值得借鉴
Feb 16 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
Sep 16 Javascript
Javascript小技巧之生成html元素
May 15 Javascript
Javascript原型链和原型的一个误区
Oct 22 Javascript
Javascript基础教程之while语句
Jan 18 Javascript
浅析jQuery Ajax通用js封装
Jun 22 Javascript
jQuery中用on绑定事件时需注意的事项
Mar 19 Javascript
简单实现JavaScript弹幕效果
Aug 27 Javascript
js CSS3实现卡牌旋转切换效果
Jul 04 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
Jul 09 Javascript
vue自定义右键菜单之全局实现
Apr 09 Vue.js
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实现与ASP Banner组件相似的类
2006/10/09 PHP
php中对xml读取的相关函数的介绍一
2008/06/05 PHP
PHP正则提取不包含指定网址的图片地址的例子
2014/04/21 PHP
PHP7内核CGI与FastCGI详解
2019/04/14 PHP
在Laravel5中正确设置文件权限的方法
2019/05/22 PHP
Javascript的时间戳和php的时间戳转换注意事项
2013/04/12 Javascript
JS去除数组重复值的五种不同方法
2013/09/06 Javascript
JS OffsetParent属性深入解析
2014/01/13 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
JS控制层作圆周运动的方法
2016/06/20 Javascript
jQuery 3.0中存在问题及解决办法
2016/07/15 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
AngularJS基础 ng-keydown 指令简单示例
2016/08/02 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
2016/10/05 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
兼容浏览器的js事件绑定函数(详解)
2017/05/09 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
2017/07/16 Javascript
Dropify.js图片宽高自适应的方法
2017/11/27 Javascript
JS实现数组删除指定元素功能示例
2019/06/05 Javascript
原生js实现3D轮播图
2020/03/21 Javascript
JS 事件机制完整示例分析
2020/01/15 Javascript
jQuery实现移动端图片上传预览组件的方法分析
2020/05/01 jQuery
python制作最美应用的爬虫
2015/10/28 Python
python使用 HTMLTestRunner.py生成测试报告
2017/10/20 Python
Python爬虫包BeautifulSoup学习实例(五)
2018/06/17 Python
详解Python3注释知识点
2019/02/19 Python
python实现拼图小游戏
2020/02/22 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
2020/11/26 Python
Mio Skincare中文官网:肌肤和身体护理
2016/10/26 全球购物
CHRONEXT英国:您的首选奢华腕表目的地
2020/03/30 全球购物
元旦晚会感言
2014/03/12 职场文书
装饰技术负责人岗位职责
2015/04/13 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
2015年幼儿教师个人工作总结
2015/05/20 职场文书
Jupyter notebook 更改文件打开的默认路径操作
2021/05/21 Python
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
2021/05/25 MySQL