2

全体的にdojoフレームワークを使用して、html5とjavascriptを使用してクライアント側でビルドするWebアプリケーションを開発しています(サーバーと通信するためにxhr.post関数を使用しています)。サーバー側は c# の asmx サービスです。

ここで問題が発生します: 私のサービスの webmethod が例外をスローしたとき:

        try
        {
            throw new Exception("TEST");
        }
        catch (Exception ex)
        {
            throw ex;
            // TODO: send some info to the client about the error
        }

クライアントはエラーが発生したことを認識し、エラー コールバック関数を起動します。

        deferred = xhr.post({
            url: that.config.urlService,
            handleAs: that.config.handleAs,
            contentType: that.config.contentType,
            postData: that.config.parameters
        });

        deferred.then(function (res) {
            that.success(res);
        },
            function (err) {
                 if (that.config.callbackFail) {
                     that.config.callbackFail(err, that.config.parameters);
                 }
            }
        );

しかし、「err」パラメーターには例外情報がありません。次のメッセージがあります。

「NetworkError: 500 内部サーバー エラー - http://.../Services/Applications/Metrawa/ServiceManagement/WSJob.asmx/Filter」

サーバーへの呼び出しをfirebugで検査すると、応答タブに、例外がシリアル化されていない場合など、奇妙な文字が表示されます。

私が欲しいのは、JavaScriptで例外情報を取得することです。独自のシリアル化可能な例外クラスを作成するなど、これに関するいくつかの情報を検索しましたが、どちらも機能しません。解決策はありますか?

前もって感謝します。

4

2 に答える 2

1

サーバー側で例外をキャッチし、常に「結果」プロパティを持つ有効なオブジェクトを返します。

例 res.Result (「OK」または「ERR」などとして、クライアントで処理します)

于 2012-09-06T09:14:13.907 に答える