2011-03-08 6 views
1

私は、コードを使用してASP.NETメソッドにいくつかのパラメータを送信します。リクエストからJsonを取得するには?

$.ajax({ 
     url: "/default.aspx/test.test", 
     type: "POST", 
     data: "{'parameter':'kapdbe'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (result) { 
      alert(result.d); 
     }, 
     error: function (XMLHttpRequest, textStatus, errorThrown) { 
      alert("Error"); 
     } 
    }); 

を次に、どのように私はHttpContext.Requestから送信されたデータを得ることができますか? ありがとうございます。

+0

は、それは '内result''ではないですsuccess() 'コールバック? – Orbling

+0

@Orbling:彼はサーバ上でリクエストデータを取得したい。 – SLaks

答えて

4

Request.InputStreamの生データをStreamReaderを使用して文字列に読み込み、その文字列からJSONを解析する必要があります。

ページメソッドを使用している場合は、受信メソッドのJSONと一致するプロパティを使用して、[Serializable]クラスをパラメータとしてページメソッドを変更するだけです。

+0

ありがとう@SLaks。私の問題は、私がcontext.Sessionを使いたいということです。 IRequiresSessionStateインターフェイスでクラスをマークしましたが、Session ["xyz"]を値に設定した後、2回目はnullです。この原因は何ですか?良い答えは – Zoliqa

2

あなたは、私がASP.NET Webフォーム権利を推測している、だから、

url: "/default.aspx/test.test" 

を書きましたの?

それは問題タグにこの情報を置くことは常に良いことだので、私たちはより良いあなたを助けることができるので、迅速

は、あなたがこれを行う必要があります。その

url: "/json/test.ashx" 

をそして作成します汎用ハンドラ(したがって、ASP.NETページライフサイクルをすべて処理する必要はなく、はるかに高速です)

のコードのようになります。

<%@ WebHandler Language="C#" Class="Handler" %> 

using System.Web; 

public class Handler : IHttpHandler { 

    public void ProcessRequest (HttpContext context) { 

     // Get your variable 
     string param = context.Request["parameter"]; 

     // Do something with it  
     MyObject output = DoSomethingWithPAram(param); 

     // Use Json.NET to get a nice JSON string 
     string json = Newtonsoft.Json.JsonConvert.SerializeObject(output); 

     // Output new stuff 
     context.Response.ContentType = "text/plain"; 
     context.Response.Write(json); 
    } 

    public bool IsReusable { 
     get { 
      return false; 
     } 
    }  
} 

はそれがお役に立てば幸いです...それはASP.NET MVC 2月3日だ場合、それは少し簡単です:)

+1

+1です。私はMVCに関するコメントに対してもう1つの+1を与えることを望みます(本当に簡単です)。 – JasCav

関連する問題