2012-09-06 43 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