2011-07-26 3 views
3

私のカスタムHtppハンドラを呼び出そうとしていて、いくつかのパラメータを渡したいのですが、httpハンドラプロセス要求メソッドでこれらのパラメータの値を取得できません。問題です 私はクライアント側jQueryコールからパラメータをHttpハンドラに渡す

$.ajax({ 
       url: 'VideoViewValidation.ashx', 
       type: 'POST', 
       data: { 'Id': '10000', 'Type': 'Employee' }, 
       contentType: 'application/json;charset=utf-8', 
       success: function (data) { 
        debugger; 
        alert('Server Method is called successfully.' + data.d); 
       }, 
       error: function (errorText) { 
        debugger; 
        alert('Server Method is not called due to ' + errorText); 
       } 
      }); 

...のようなコードを使用して、これは私のカスタムのHTTPハンドラである

public class VideoViewValidation : IHttpHandler 
{ 

    public void ProcessRequest(HttpContext context) 
    { 
     string videoID = string.Empty; 
     string id = context.Request["Id"]; 
     string type = context.Request["Type"]; 
} 
} 

を教えてください。

+0

ステップバイステップのチュートリアルはこちらです。http://codepedia.info/2015/05/generic-handler-ashx-file-post-send-json-data-parameters-in-asp-net-c-jquery/ –

答えて

6

削除 "のcontentType: 'アプリケーション/ JSON;のcharset = UTF-8'"そして「データ型: 『JSON』は、」追加

+0

ありがとう、それも働いていない。 – Abhishek

+0

dataTypeの代わりにcontentTypeを使用していたときに動作しないと教えてもらえますか? – Abhishek

+0

"debugger;"を削除してください。 「コンソール」を使用して、要求が送信され、応答の内容が何であるかを確認します。 – Darm

0
あなたがなどのRequest.Form [ "ID"]を見てする必要がありますので、お使いのjQueryのPOSTデータを送信している

public class VideoViewValidation : IHttpHandler 
{ 

    public void ProcessRequest(HttpContext context) 
    { 
     string videoID = string.Empty; 
     string id = context.Request.Form["Id"]; 
     string type = context.Request.Form["Type"]; 
} 
} 
+0

私はそれを試みたが、それは動作していない。 その結果のヌル値。自分で試してみてください。 – Abhishek

+0

これはAbisheksのオリジナルコードの対象です。 context.Requestメンバには、 "System.Web.HttpRequest.QueryString、System.Web.HttpRequest.Form、System.Web.HttpRequest.Cookies、またはSystem.Web.HttpRequest.ServerVariablesコレクションから指定されたオブジェクトを取得するデフォルトのインデクサがあります。 "。 –

4

DARMの答えは正しかったが、ちょうどこの作品理由について明確にする...

を$アヤックス()が使用するようにあなたが行contentType: 'application/json;charset=utf-8'を削除する必要がありますcontentType: 'application/x-www-form-urlencoded; charset=UTF-8'のデフォルト(docs for $.ajaxで指定されている)。これを単独で実行すると、コードサンプルが機能するはずです(dataTypeパラメータは実際にになると予想されるデータ型を指定し、サーバーからを返します)。この場合

$.ajax({ 
    url: 'VideoViewValidation.ashx', 
    data: { 'Id': '10000', 'Type': 'Employee' }, 
}); 

、リクエストがGETを介して行われることになると、パラメータはクエリ文字列を介して送信されます:

最も単純な形式で、あなたは次のように呼び出す)($のアヤックスを書くことができますしかし、それはまだcontext.Requestで動作します。

+0

これは正しいです! –

0

データは、ajax呼び出しを使用してハンドラに送信されます(通常のフォーム送信からではありません)。データを取得するには、context.Request ["Id"]が必要です。そのトリックを行う必要があります。

関連する問題