ajax问题二则

今天做一个网站的时候,在用户登录的时候尝试了使用ajax的post异步传递方式来验证用户

之前只研究过get传递方式的,都没弄过post的= =!这次趁这个机会尝试了下post,找了点资料,发现都没什么难度,跟get区别不是很大 = =!其实我还是一个ajax新手。。。。。这是真的,因为我对ajax的研究非常少。。

这里就顺便替另一个问题,以前我用jsp做ajax的时候,用的是过滤器,所以没有中文乱码的问题,今天用asp做了后,由于服务器相应的页面没有设置编码,所以返回的时候就出现了乱码,所以呢这里就提供个解决乱码的方案,网上找的哈~最后一个asp是我自己加上去的 = =!

PHP:header('Content-Type:text/html;charset=GB2312');
JSP:response.setHeader("Charset","GB2312");
ASP:Response.Charset = "GB2312"

在相应的语言中加入相应的编码设置代码即可,其实JSP的方法比较多,例如我用的过滤器,这里就只说最简单的一种了

然后就要说我今天遇到的一个差点头大的问题。。哈哈,幸好头没大。。。。

在用户登录,并且服务器异步响应一次之后,第二次就不灵光了。。。我郁闷的很,一定要刷新一次网页后才重新有效,这个问题很奇怪,我反复查了我的代码。。。都没有发现错误的地方。

但肯定有问题存在的。。。然后。。欣水在经过一番冷静的思考之后。。终于找到了元凶!原来是我在参考post传递方式的时候。。。就在那时候。。。也就是说,就是那个时候,我一时懒惰,把别人的代码复制过来稍微改了改,结果照别人的代码把onreadystatechange的结果写在了open的前面。。。于是乎,我意识到了这个结局,一次性的结局,服务器永远只会响应一次,因为open只能执行一次 = =!

这就是我错误的代码:
       var param="uname="+uname+"&upwd="+upwd+"&way=1";
    request.onreadystatechange = updatePage;
       request.open("post","logincheck.asp",true);
       request.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");  
       request.send(param);

立刻把onreadystatechange搬了下去,几乎就把它从顶楼搬到了底楼,终于。。。整个世界如果我所料般的。。不再只是一次性了hoho

这就是我纠正后正确的代码:
       var param="uname="+uname+"&upwd="+upwd+"&way=1";
       request.open("post","logincheck.asp",true);
       request.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");  
    request.onreadystatechange = updatePage;
       request.send(param);

希望对遇到同样问题的朋友有所帮助,因为我一开始发现这个问题的时候在网上没有发现有相关资料的,所以这里写出来以方便以后的朋友用到,嘿嘿

现在突然想到,那个提供代码的朋友。。。。不知道他是不是也遇到过同样的问题,又或者他的ajax只需要执行一次,所以没有发现我上面阐述的。。问题。。。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值