2012-09-06 77 views
0

我想用兩個參數異步地從客戶端(JavaScript)發送一個POST到服務器端(ASP.Net):數字和長格式的字符串。用ASP.NET處理xhr

我知道長格式的字符串必須有encodeURIComponent()在它傳遞它。

我的問題是我想嵌入在機身的請求長編碼字符串,後來從C#打開它在服務器端。

請你能幫幫我嗎?我搞亂了太多與AJAX,XHR,的Request.QueryString [],的Request.Form [],....

回答

1

首先,創建一個HttpHandler:

using System.Web; 
public class HelloWorldHandler : IHttpHandler 
{ 
    public HelloWorldHandler() 
    { 
    } 
    public void ProcessRequest(HttpContext context) 
    { 
     HttpRequest Request = context.Request; 
     HttpResponse Response = context.Response; 
     //access the post params here as so: 
     string id= Request.Params["ID"]; 
     string longString = Request.Params["LongString"]; 
    } 
    public bool IsReusable 
    { 
     // To enable pooling, return true here. 
     // This keeps the handler in memory. 
     get { return false; } 
    } 
} 

然後將其註冊:

<configuration> 
    <system.web> 
     <httpHandlers> 
      <add verb="*" path="*.ashx" 
        type="HelloWorldHandler"/> 
     </httpHandlers> 
    </system.web> 
</configuration> 

現在稱之爲 - 使用jQuery的Ajax:

$.ajax({ 
     type : "POST", 
     url : "HelloWorldHandler.ashx", 
     data : {id: "1" , LongString: "Say Hello"}, 
     success : function(data){ 
      //handle success 
     } 
}); 

注:

完全未經測試的代碼,但它應該非常接近你所需要的。

我剛剛測試過,它開箱即用。這就是我所說的:

<script language="javascript" type="text/javascript"> 
    function ajax() { 
     $.ajax({ 
      type: "POST", 
      url: "HelloWorldHandler.ashx", 
      data: { id: "1", LongString: "Say Hello" }, 
      success: function (data) { 
       //handle success 
      } 
     }); 
    } 
</script> 
<input type="button" id="da" onclick="ajax();" value="Click" /> 
+0

這樣,傳遞給Post ajax調用的數據會嵌入到請求正文中嗎? (而不是進入ajax調用的查詢字符串?) – SamuGG

+0

@SamuGG正確,這是一個POST請求。 – Icarus