2013-08-08 25 views
7

私はajax投稿の成功をホームページに行きたいと思っています。なんらかの理由で私はそれを間違ってやっています。私はこれを解決するために何をすべきですか?Ajax投稿後にリダイレクトする

window.APP_ROOT_URL = "<%= root_url %>"; 

アヤックス

$.ajax({ url: '#{addbank_bankaccts_path}', 
type: 'POST', 
beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', '#{form_authenticity_token}')}, 
dataType: "json", 
data: 'some_uri=' + response.data.uri , 
success: function(APP_ROOT_URL) { 
     window.location.assign(APP_ROOT_URL); 
    } 
}); 
+0

ajaxが正常に返されていますか? –

+0

'window.location.href = APP_ROOT_URL' – abc123

+1

ブラウザのコンソールにメッセージが表示されますか? – Uooo

答えて

13
success: function(response){ 
         window.location.href = response.redirect; 
        } 

これが役立つことを願っていますし、私は同じ問題

+2

(-1)にしたいだけです。 – FakeRainBrigand

+0

@FakeRainBrigandよろしくお願いします – Backtrack

+0

親愛なるdownvotersコメントを残してください – Backtrack

6

あなたはリダイレクトステータスで、サーバからJSONを返すとURLをリダイレクトすることができました。

{"redirect":true,"redirect_url":"https://example.com/go/to/somewhere.html"} 

そして、あなたのjQueryのAjaxのハンドラ

success: function (response) { 
    // redirect must be defined and must be true 
    if (response.redirect !== undefined && response.redirect) { 
     window.location.href = response.redirect_url; 
    } 
} 

では、あなたがAJAX設定でdataType: 'json'を設定する必要があります。これが参考になることを願っています。ありがとう!

5

理由はわかりませんが、window.location.hrefは私にとってはうまくいきませんでした。代わりにwindow.location.replaceを使用してしまいましたが、実際にはうまくいきました。

$('#checkout').click(function (e) { 
    e.preventDefault(); 
    $.ajax('/post/url', { 
     type: 'post', 
     dataType: 'json' 
    }) 
    .done(function (data) { 
     if (data.cartCount === 0) { 
      alert('There are no items in cart to checkout'); 
     } 
     else { 
      window.location.replace('/Checkout/AddressAndPayment'); 
     } 
    }); 
}); 
関連する問題