用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 数组循环引起的思考
Jan 01 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
Dec 19 Javascript
js购物车实现思路及代码(个人感觉不错)
Dec 23 Javascript
无刷新上传文件并返回自定义值
Jun 11 Javascript
学习Angular中作用域需要注意的坑
Aug 17 Javascript
js获取指定字符前/后的字符串简单实例
Oct 27 Javascript
jQuery动态生成表格及右键菜单功能示例
Jan 13 Javascript
基于iScroll实现内容滚动效果
Mar 21 Javascript
vue项目中应用ueditor自定义上传按钮功能
Apr 27 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
Aug 06 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
Oct 10 jQuery
vue3不同环境下实现配置代理
May 25 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
模拟OICQ的实现思路和核心程序(二)
2006/10/09 PHP
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
解析php中的escape函数
2013/06/29 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
2013/07/01 PHP
什么是PEAR?什么是PECL?PHP中两个容易混淆的概念解释
2015/07/01 PHP
详解PHP 7.4 中数组延展操作符语法知识点
2019/07/19 PHP
JS面向对象、prototype、call()、apply()
2009/05/14 Javascript
Google 静态地图API实现代码
2010/11/19 Javascript
jQuery使用height()获取高度需要注意的地方
2014/12/13 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
Javascript函数的参数
2015/07/16 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
基于jQuery实现仿51job城市选择功能实例代码
2016/03/02 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
2016/06/30 Javascript
JQuery实现动态操作表格
2017/01/11 Javascript
vue2.X组件学习心得(新手必看篇)
2017/07/05 Javascript
JS原型继承四步曲及原型继承图一览
2017/11/28 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
vue 修改 data 数据问题并实时显示操作
2020/09/07 Javascript
python模拟Django框架实例
2016/05/17 Python
shelve  用来持久化任意的Python对象实例代码
2016/10/12 Python
人脸识别经典算法一 特征脸方法(Eigenface)
2018/03/13 Python
PyTorch快速搭建神经网络及其保存提取方法详解
2018/04/28 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
2018/09/13 Python
python 读写文件包含多种编码格式的解决方式
2019/12/20 Python
python同义词替换的实现(jieba分词)
2020/01/21 Python
将数据集制作成VOC数据集格式的实例
2020/02/17 Python
keras实现图像预处理并生成一个generator的案例
2020/06/17 Python
John Hardy官方网站:手工设计首饰的奢侈品牌
2017/07/05 全球购物
高三高考决心书
2014/03/11 职场文书
综合办公室主任岗位职责
2014/04/13 职场文书
无子女夫妻离婚协议书(4篇)
2014/10/20 职场文书
2016年十一促销广告语
2016/01/28 职场文书
Python 多线程之threading 模块的使用
2021/04/14 Python
Android开发实现极为简单的QQ登录页面
2022/04/24 Java/Android