2013-01-08 8 views
9

私は今これを解決しようとしてきましたが、私はそれを得ることができません。ユーザーがリンクをクリックすると、彼はこの行動を取ることを確認するように求められます。その後、ajax呼び出しが行われます。呼び出されたスクリプトはうまく動作し、リダイレクト先の文字列を返します。ajaxの成功のためのwindow.location.hrefは正常に動作しません

ここではwindow.locationの問題についていくつかの記事を見てきましたが、いずれも私の問題を解決できませんでした。

マイコード:

function confirm(a,b,c){ 
     var r=confirm("Are you sure to do this?"); 
     if(r==true){ 
      $.ajax({ 
       type: "POST", 
       url: "/process-action.php", 
       async: false, 
       data: {a:a,b:b,c:c}, 
       success: function(data){ 
        window.location.href = data; 
       } 
      }); 
     } else { 
      return false; 
     } 
    } 

私はalert(data)代わりのwindow.location.href = dataをすれば、私は正しいデータが渡されていることがわかります。たとえば/ user/homepageの場合しかし、リダイレクトは行われていません。

相対パスをURL全体に置き換えようとしたが、それもうまくいかなかった場合。

+0

try location.href = data – Andy

答えて

16

ではなくassign()を使用してみてください:

window.location.assign(data); 

window.location.hrefは財産ではない方法です。

+0

ありがとうございました! – user1662927

+0

は私のために働いていない:(IE 11 – Reena

+0

にそれが正常に動作する必要があり@reenaエラー –

1

場所assign()方法

The assign() method is supported in all major browsers. 
-1

また、window.locationの= "someurl" を使用することができます。

+0

このアプローチは、Android上の現代のChromeモバイルブラウザでは機能しません。 。Rory McCrossanのアプローチを代入する必要があります。 –

0

あなたはこの

<form action="submit.php" onsubmit="return false;" method="post">

を使用することができ、あなたの同じスクリプトが仕事になります。

+0

詳しくは – Panther

+0

ajaxを使用してフォームを送信する場合は、フォームが送信されてアクションが実行されるため、成功した場合は場所をリロードできません。フォームを送信しないように関数onsubmitを追加し、ajaxでデータを送信してエラーなしでページを正常に再ロードすることができます。 –

関連する問題