1

ユーザーを別のページ/ビューにリダイレクトして、JSON の結果を返すことはできますか? 別のasp.net mvc Webアプリの別のメソッドへのクロスドメイン呼び出しを行うWebアプリケーションがあり、ユーザーが呼び出しを行った後に別のページ/ビューにリダイレクトしたいが、JSON文字列も返したいユーザーが正常にリダイレクトしたか、エラーが発生したことを示す、呼び出し元の Web アプリに。このシナリオをどのように処理できますか?

これは 1 つの方法でできることですか、それとも分割する必要がありますか? もしそうなら、どのように?

4

2 に答える 2

1

私の理解が正しければ、ここで 3 つのシステムが相互に作用しています。

  • クライアント (HTML/JavaScript)
  • サーバー (ASP.NET)
  • リモートサーバー (使用するテクノロジーは重要ではありません)

それでも正しく理解している場合、シナリオはクライアントがリモートサーバーにリクエストを行っているが、サーバーはそのリクエストの結果を知る必要があるということですか?

リクエストはクライアントとリモート サーバーの間で行われるため、サーバーは関与せず、リモート サーバーから直接応答を受け取ることはできません。ただし、クライアントはこのやり取りを処理できます。1 つのアプローチは次のようなものです。

  • クライアントがリモート サーバーに要求を出す
  • クライアントがリモート サーバーから応答を受信し、エラーまたはリダイレクトの実行を示します
  • エラーの場合、クライアントはサーバーにエラーを通知します (おそらくユーザーにも通知します)
  • リダイレクトの場合、クライアントはサーバーに成功を通知し、リダイレクトを実行します。

ほとんどの擬似コードでは、次のようになります。

$.ajax({
    url: 'http://remoteserver/request_target'
}).done(function(data, textStatus, jqXHR) {

    // success, notify Server and redirect
    $.post('http://server/success_handler', successData)
     .done(function () {
        window.location.replace('http://remoteserver/redirect_target');
    });

}).fail(function(jqXHR, textStatus, errorThrown) {

    // fail, notify Server
    $.post('http://server/error_handler', errorData);

});

最初に、リモート サーバーへの AJAX 要求を実行します。リクエストが成功すると、サーバーに対して AJAX リクエストを実行して成功を通知し、そのリクエストの後にリダイレクトを実行します。Remote Server へのリクエストが失敗した場合は、Server に AJAX リクエストを実行してエラーを通知します。(何を入れるか、successDataまたはerrorData、もしあれば、サーバーに送信する必要があるものは何でも構いません。)

于 2013-11-03T16:57:49.227 に答える