0

クライアント側 (JavaScript) からサーバー側 (ASP.Net) に POST を非同期的に送信したいと思います。数値と長い形式の文字列の 2 つのパラメーターがあります。

長い形式の文字列には、渡す前にencodeURIComponent()が必要であることを理解しています。

私の問題は、長いエンコードされた文字列を本文リクエストに埋め込み、後でサーバー側の C# から開きたいことです。

助けてくれますか?私はajax、xhr、Request.QueryString[]、Request.Form[]、....をいじりすぎています。

4

1 に答える 1

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>

今それを呼んでください-jQueryAjaxを使用して:

$.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" />
于 2012-09-06T18:20:52.387 に答える