1

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

次に2つのシナリオを示します。

このシナリオは機能します:

  1. ProcessRequest()で、callExternalWebsite()をコメントアウトします。
  2. オブジェクトoの場合、結果をシミュレートするためにデータで初期化します。
  3. myButtonをクリックします
  4. 成功イベントはクライアントで発生します。
  5. Fiddlerでは、ヘッダー情報を確認できます。Jsonの結果などが表示されます。

このシナリオは機能しません。

  1. ProcessRequest()で、callExternalWebsite()の呼び出しを有効にします。
  2. オブジェクトoの場合、callExternalWebsite()は適切なオブジェクトを返します。
  3. myButtonをクリックします
  4. 成功イベントはクライアントでは発生しません。
  5. Fiddlerでは、ヘッダー情報を確認できます。Jsonの結果などが表示されます。
  6. callExternalWebsite()が機能しているのは、電話に結果を送信しているからです。

要約すると、HttpHandler内の外部http呼び出しがAjax成功イベントに影響を与えています。

これがAJAX呼び出しからのスニペットです:(私はさまざまな相互作用を試みていました)

    $(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
            });
        });
    });

HttpHandler Request.ashxで、

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);

}

何かご意見は?

ありがとう。

スティーブ

4

1 に答える 1

0

msg と msg.d を比較するとどうなりますか:

$(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
        });
    });
});
于 2012-04-13T13:41:04.067 に答える