0

私は AJAX/jQuery が初めてです。私は2つのボタンを持っています。ボタンをクリックするたびに、AJAX リクエストをサーバーに送信する必要があります。ただし、このプロセス中にも、ユーザーがサインインしているかどうかを確認する必要があります。ユーザーがサインインしていない場合は、ログイン ページにリダイレクトされ、ログイン後に同じページに戻る必要があります。また、AJAX 呼び出しでは、URL で指定されたアプリケーションが、ユーザーがサインインしているかどうかを確認し、ログイン ページにリダイレクトします。アプリケーションには、ログイン ページの URL を作成する機能が含まれています。ユーザーが既にサインインしている場合、別の関数がアプリケーションで呼び出されます。私が今直面している問題は、プロジェクト全体を実行したときに成功関数が呼び出されないことです。代わりにエラー関数が呼び出されます。しかし、パラメータをクエリ パラメータとして URL に渡すと、ログイン ページにリダイレクトされます。

例: www.abc.com/application?X=1&Y=2

どんなアイデアでも大歓迎です。

{
  $.ajax({
    type: "GET",
    data: {
      X:param1,
      Y:param2,
    },
    url: "/application",
    success: function(data, status)
    {
      if (data.redirect) {
        window.location.href = data.redirect;
      } else {
        alert("success message");
      }
    },
    error:function()
    {
      alert("error message")
    }
  });
}
4

1 に答える 1

0

data.redirect は、データが json オブジェクトであると仮定して機能します。確実に dataType: "json" を上記に追加すると、動作するはずです。Chromes Network パネルを使用して、サーバーが正しく通信しているかどうかを確認します。また、返される Mime-Type も確認してください。「アプリケーション/json」にする必要があります。

エラー関数は、リクエストが失敗したときに発生します。3 つの引数を取りますが、2 番目はエラー文字列で、"timeout"、"error"、"abort"、および "parsererror" のいずれかです。

代わりにこれを試してみると、より多くのデバッグ情報が見つかるかもしれません。

{
  $.ajax({
           type: "GET",
           data: {
                  X:param1,
                  Y:param2,
               },
           url: "/application",
           success: function(data, status)
           {
             if (data.redirect) {
               window.location.href = data.redirect;
             } else {
               alert("success message");
             }
           },
           error:function(jqXHR, text)
           {
             alert("error message: "+text);
           }
    });

}

于 2013-08-25T03:58:25.967 に答える