2012-04-13 16 views
1

JQueryを使用してAJAXをローカルサービスにしています。ローカルサービスはHttpHandler(例:Request.ashx)です。 Request.ashx内では、外部のウェブサイト(CallExternalWebsite()など)を呼び出す必要があります。 CallExternalWebsite()は、.NETのSystem.Net.WebRequest()を使用してリクエストを開始します。外部Webサイトにアクセスすると、成功イベントまたはエラーイベントのいずれも起動されません。 (注:私はまた、IISでホストされているこのWCFサービスを試してみました私は、同じ結果見ています。)ここでサービスを呼び出すときにAjax成功イベントが発生しない

は2つのシナリオです:

このシナリオでは動作します:のprocessRequestで

  1. を( )、コメントアウト callExternalWebsite()。
  2. オブジェクトoの場合、結果をシミュレートするデータで初期化します。
  3. myButtonをクリックしてください
  4. 成功イベントは、クライアント上で発生します。
  5. Fiddlerでは、ヘッダ情報を見ることができます。私は、このシナリオが動作しないなど

、JSONの結果を参照してください:のprocessRequestで

  1. は()、 callExternalWebsiteの呼び出しを()を有効にします。
  2. オブジェクトoの場合、callExternalWebsite()は適切なオブジェクトを返します。
  3. myButtonをクリック
  4. 成功イベントは、クライアントでが発生しません。
  5. Fiddlerでは、ヘッダ情報を見ることができます。私はJsonの結果などを参照してください。
  6. 私は私の携帯電話に結果を送信しているので、私はcallExternalWebsite()が動作していることを知っています。

これを要約すると、HttpHandler内の外部httpコールがAjaxの成功イベントを実行しています。ここで

は、AJAX呼び出しからの抜粋です: (私は別のinterationsをしようとしていた)のHttpHandler Request.ashxで

$(document).ready(function() { 
     $("#myButton").click(function (event) { 

      $.ajax({ 
       cache: false, 
       type: "POST", 
       url: "http://localhost/Service/Request.ashx", 
       data: '{"id" : "053252f3"}', 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       timeout: 20000, 
       success: function (msg) { 
        AjaxSucceeded(msg); 
       }, 
       error: AjaxFailed 
      }); 
     }); 
    }); 

public Void ProcessRequest(httpContent context) 
{ 
// Do some stuff.... 

// Make call to external web site 
object o = callExternalWebsite (Uri, Data, "POST"); 

// Return results from callOtherWebsite 
     JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer(); 
     string json = javaScriptSerializer.Serialize(o); 
     context.Response.ContentType = "application/json"; 
     context.Response.Write(json); 

} 

任意の考え?

ありがとうございました。

あなたがこれを行うとどうなりスティーブ

+1

は、応答はHTTP 200/OKであるあなたは確かにいますか?私は、2xxのステータスコードだけが "Success"をconsiperedと信じています。 –

+0

あなたは 'AjaxSucceeded'にコードを投稿できますか?おそらくそこに問題があるかもしれません。成功したブランチが実行されていないことを確認するには、 'alert(" hello! ")やそれに類するものに成功の呼び出しを変更してみてください。 –

+0

私は成功しました: 'success:function(msg){alert(" hello "); } ' でも、まだ実行されませんでした。 Request.ashxコールからの応答を返します。 'HTTP/1.1 200 OK Cache-Control:private Content-Type:application/json; 0xX-AspNet-Version:4.0.30319 X-Powered-By:ASP.NET 日時:2012年4月13日(金)16:28:40 GMT Content-長さ:84' すべてうまく見えます。 – Steve

答えて

0

、msg.d対MSG:

$(document).ready(function() { 
    $("#myButton").click(function (event) { 

     $.ajax({ 
      cache: false, 
      type: "POST", 
      url: "http://localhost/Service/Request.ashx", 
      data: '{"id" : "053252f3"}', 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      timeout: 20000, 
      success: function (msg) { 
       AjaxSucceeded(msg.d); 
      }, 
      error: AjaxFailed 
     }); 
    }); 
}); 
関連する問題