Ajax的post方法的使用

不指定
2009-11-15 14:22 by:果面 PC应用 » 网页相关 本站原创 | |
  一些简单的基础知识,一些小小的细节,也许就决定了一个功能甚至一个软件的成败。

前几天做一个小功能,用户注册时使用Ajax检验用户名是否已被注册。因为在这个小项目中,只在这里使用了Ajax,所以就不打算用以前常用的Prototype。开始时是使用get方法提交数据的,后来想想,还是换成post吧,没别的原因,因为Prototype默认是使用post方法的,所以就觉得post看上去顺眼一点。写好的Javascript代码如下:
Javascript
  var Ajax=function(option){
      var request;
      var CreateRquest=function(){
        var httpRequest;
        try{
          httpRequest=new ActiveXObject("Msxml2.XMLHTTP");
        }catch(e){
          try{
            httpRequest=new ActiveXObject("Microsoft.XMLHTTP");
          }catch(e1){
            httpRequest=new XMLHttpRequest();
          }
        }
        return httpRequest;
      }
      var SendRequest=function(){
        request=CreateRquest();
        request.open("post",option.Url,true);
        
        request.onreadystatechange=ResponseRequest;
        request.send(option.Param);
      }
      var ResponseRequest=function(){
        if(request.readystate==4){
          if(request.status==200){
            option.Success(request);
          }
          else{
            option.Failure(request);
          }
        }
      }
      SendRequest();
    }
    var OnBlur=function(el)
    {
      var option={
        Url:"Handler.ashx",
        Param:"text=abv",
        Success:function(request){
          alert(request.responseText);
        },
        Failure:function(request){
          alert(false);
        }
      };
      new Ajax(option);
    }

后台代码如下:
Handler
  Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
    context.Response.ContentType = "text/plain"
    context.Response.Write(context.Request.QueryString.Count)
    Dim text As String = context.Request.Form("text")
    context.Response.Write(text)
  End Sub


  测试的时候发现,后台怎么也获取不到前台传来的数据,真是百思不得其解。翻了一下书,都是只说get不说post方法的,然后在百度上狂找资料,真是功夫不负有心人啊,终于找到了,原来要在open方法的后面加上一句话:

      var SendRequest=function(){
        request=CreateRquest();
        request.open("post",option.Url,true);
        
        request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        
        request.onreadystatechange=ResponseRequest;
        request.send(option.Param);
      }

  OK,事情就这么简单的搞定了,真是踏破铁鞋无觅处,得来全不废功夫啊。

  本人具体也没研究过为什么要加上这句话:

        request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
评论(0) 引用(0) 阅读(2047)