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
投稿

猜你喜欢

  • Oracle 游标使用总结

    2009-10-02 17:36:00
  • Python登录注册验证功能实现

    2022-10-17 04:53:00
  • 解决vue项目获取dom元素宽高总是不准确问题

    2024-04-28 09:32:14
  • 如何基于Python制作有道翻译小工具

    2023-10-01 21:00:58
  • 用pywin32实现windows模拟鼠标及键盘动作

    2023-07-04 21:26:30
  • Pandas处理时间序列数据操作详解

    2021-06-19 07:21:45
  • xml xpath基础语法

    2008-01-21 12:46:00
  • SQL Server 2008升级报表服务器数据库

    2008-11-18 12:36:00
  • python代码过长的换行方法

    2022-12-25 07:19:59
  • MySQL远程连接不上的解决方法

    2024-01-21 00:34:09
  • Python的gevent框架的入门教程

    2023-06-26 16:58:34
  • php 模拟get_headers函数的代码示例

    2023-09-09 06:16:36
  • Python数据可视化Pyecharts库实现桑葚图效果

    2022-01-05 23:39:44
  • pycharm 激活码及使用方式的详细教程

    2023-05-16 15:11:15
  • Python+OpenCV+pyQt5录制双目摄像头视频的实例

    2021-12-22 02:07:24
  • Python删除windows垃圾文件的方法

    2023-08-24 15:38:23
  • Perl初学笔记之Hello World

    2022-05-21 10:28:55
  • Python中 whl包、tar.gz包的区别详解

    2021-08-24 18:58:41
  • 在sqlserver2005中安装sql server 2000的示例数据库northwind的方法

    2024-01-18 11:00:12
  • PyQt5每天必学之日历控件QCalendarWidget

    2023-05-30 12:12:48
  • asp之家 网络编程 m.aspxhome.com