网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.探讨一下rs(0)和rs("fieldn.
.配置IIS4实现应用程序隔离.
.使用组件搜索.
.关于#include的补充说明.
.IIS5 + ADO 2.5新先睹为快技术(.
.页面延迟的两个简单方法.
.构造ConnectionString的方法.
.了解MSMQ,控制ASP进程 (二).
.ASP中Cookie使用指南.
.好东西,翻页程序,大家可以参考.
.ASP生成XBM图可用作验证码.
.浅谈ASP编程的思路与纠错.
.用DHTML来模拟实现下拉菜单.
.提高ASP页面的执行效率(下).
.WEB页面实现淡入淡出菜单.
.Jmail中避过smtp验证的一法.
.ASP 中 Split 函数的实例.
.对ASP动态包含文件方法的改进.
.用通ASP直接获取用户真实IP地址.
.为ASP开发者介绍ColdFusion.

ASP接收Ajax 在POST方式下发送的escape编码中的个别乱码

发表日期:2008-2-29


看代码:

         var xmlhttp=getHTTPObject();
  var post="test·test+test·";
  xmlhttp.open('POST', 'test.asp?random='+Math.random(), true);
  xmlhttp.setrequestheader("content-length",post.length);
  xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  xmlhttp.onreadystatechange = function(){
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200 ){
      alert(xmlhttp.responseText);
      return true;
    }
  }
  xmlhttp.send("act="escape(post));


在这里,我以POST方式发送了字符串escape("test·test+test·"),并且使用了setRequestHeader

ASP端接收的时候,我用

<%Response.CodePage=936%>
<%Response.Charset="gb2312"
Response.Write Unescape(Request("act"))
%>


最后调试一下你看到的结果就是“·”和“+”都显示不出来。

开始我以为是asp和javascript的escape unescape不配套的结果,后来我使用vbsunescape(如下)代替unescape问题依然如故。


<script language="javascript" runat="server">

  function vbsunescape(source){
    return unescape(source);
  }

</script>


我把+做了转义,但是·不知道怎么弄,他把·转成了什么我本来想写进一个2进制文件看看(必须是二进制文件),但是在asp下用stream操作2进制文件我老出错,哎没时间弄这个了,还有好多事呢,先凑合转义一下了,这个问题留给看到这个blog的高手们,解决了和我说一声,谢了!


function escape2(str){
  return escape(str).replace(/\+/g,"%2b");
}

--------------------------------------------
看到大家的回复,谢谢大家。汲取大家的思想精华,我终于研究出来了。。。。

最终的完美的解决方法是这样的

发送端用encodeURIComponent(escape(xxxxxxx))就可以了(其他发送接受代码同上)

我昨天仅作了encodeURI的尝试,没有想到encodeURIComponent和escape套接的方法,刚才突然来了灵感试了一下,太牛逼了,OHYEAH!吃饭去!!

上一篇:在asp中使用js的encodeURIComponent方法 人气:3811
下一篇:SQL存储过程初探 人气:5835
浏览全部Ajax的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐