ajax代理程序,自动判断字符编码

作者:光明使者 来源:crazy blog 时间:2007-11-04 13:17:00 

由于ajax在跨域的访问上有问题,目前最好的方法是做代理.写了个代理程序和心得为了做ajax的代理,研究了下服务器端的xmlhttp并和客户端的ajax中的xmlhttp做了个比较,后台代码是asp的服务器端的xmlhttp也就是asp小偷程序,我把代码改成了javascript.

1.在服务器端的xmlhttp.Open("GET",url,false)异步必须是关闭的,而客户端的异步是打开的,这个很好理解.

2.在服务器端的xmlhttp.Responsebody 这里用的是Responsebody而不是ResponseTextResponseXml,一开始我是用ResponseText,但在函数bytesToBSTR转换编码的时候提示错误,经过比较发现其他的asp小偷程序里的代码都是Responsebody,分析后,发现body返回来的是二进制数据而不是像ResponseText或ResponseXml那样返回字符或dom对象.

ajax的asp代理函数介绍

send_request(url) ,url为地址

服务器端代码如下带自动判断所有字符编码,已测试 日语 韩语 繁体


<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>XMLHTTP 自动判断字符编码</title>
</head>
<%
Server.ScriptTimeout=9999999;
function send_request(url) {
    var codedtext;
    http_request = Server.CreateObject("Microsoft.XMLHTTP");
    http_request.Open("GET",url,false);
    http_request.Send(null);
    if (http_request.ReadyState == 4){
        //自动判断编码开始
        var charresult = http_request.ResponseText.match(/CharSet=(\S+)\">/i);
        if (charresult != null){
        var Cset = charresult[1];
        }else{Cset = "gb2312"}//对获取不到的网站采用gb2312编码,可自行更改
        
//自动判断编码结束
        codedtext = bytesToBSTR(http_request.Responsebody,Cset);
        }else{
        codedtext = "Erro";
        }
    return(codedtext);
}
function bytesToBSTR(body,Cset){
var objstream;
objstream = Server.CreateObject("Adodb.Stream");
objstream.Type = 1;
objstream.Mode = 3;
objstream.Open();
objstream.Write(body);
objstream.Position = 0;
objstream.Type = 2;
objstream.Charset = Cset;
bytesToBSTR = objstream.Readtext;
objstream.Close;
return(bytesToBSTR);
}
%>
<body>
<% Response.Write(send_request("http://www.daum.net")) %>
</body>
</html>

标签:编码,xmlhttp,ajax
0
投稿

猜你喜欢

  • 自己写的一个PJBlog中可以双击输入验证码的修改

    2009-05-17 10:51:00
  • 三种不同方式连接MySQL数据库的方法及示例

    2010-06-11 13:37:00
  • [翻译]标记语言和样式手册 Chapter 1 清单

    2008-01-15 10:26:00
  • 《色彩解答》系列之一 色彩层次

    2008-02-17 14:26:00
  • CSS代码实现下划线样式的输入框效果

    2010-03-16 12:42:00
  • Oracle 自增(auto increment) 或 标识字段的建立方法

    2009-03-06 11:15:00
  • ajax 同步请求和异步请求的差异分析

    2011-07-05 12:36:04
  • Excel和Access之间的数据交换

    2008-11-20 16:53:00
  • Dreamweaver制作网页11种技巧详解

    2007-11-05 14:00:00
  • 如何在网页设计中使用个性化字体

    2009-07-07 11:29:00
  • Oracle字符集修改查看方法

    2009-11-05 21:45:00
  • JavaScript 颜色梯度和渐变效果

    2009-03-18 11:16:00
  • asp里Sub与Function有什么区别

    2007-08-17 10:39:00
  • 最全的MYSQL备份方法

    2009-12-29 10:19:00
  • 修炼设计能力的土办法

    2008-07-16 10:34:00
  • 初学js者对javascript面向对象的认识分析

    2011-03-16 11:04:00
  • 快速掌握怎样选择准备安装的 MySQL版本

    2008-12-17 16:42:00
  • js友好的表单验证程序vform

    2007-08-16 13:32:00
  • SQL Server数据库搭建农村信息化的方案

    2009-01-23 14:16:00
  • getWindow与isWindow

    2009-12-28 13:12:00
  • asp之家 网络编程 m.aspxhome.com