細節決定成敗《一》– Ajax的post方法的使用

來源:互聯網
上載者:User

  一些簡單的基礎知識,一些小小的細節,也許就決定了一個功能甚至一個軟體的成敗。

  前幾天做一個小功能,使用者註冊時使用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");

 



  還望大蝦們不吝賜教。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.