2013-08-08 25 views
7

Tôi muốn thành công trên bài đăng ajax để truy cập trang chủ. Vì một lý do nào đó, tôi tiếp tục làm sai. Bất kỳ ý tưởng những gì tôi nên làm gì để sửa lỗi này?Chuyển hướng sau bài đăng Ajax

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

Ajax

$.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

bạn có chắc chắn ajax đang trở lại thành công không? –

+0

'window.location.href = APP_ROOT_URL' – abc123

+1

Bạn có thấy bất kỳ thư nào trong bảng điều khiển của trình duyệt không? – Uooo

Trả lời

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

Hy vọng điều này sẽ giúp đỡ và tôi đã có cùng một vấn đề

+2

(-1) vì 'assign' là hợp lệ và không có chỉ định nào về định dạng JSON (ví dụ: thuộc tính chuyển hướng). – FakeRainBrigand

+0

@FakeRainBrigand Được rồi cảm ơn bạn – Backtrack

+0

Những người bạn yêu mến hãy để lại một bình luận – Backtrack

6

Bạn có thể trả lại JSON từ máy chủ với tình trạng chuyển hướng và chuyển hướng URL.

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

Và trong ajax handler jQuery của bạn

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

Lưu ý bạn phải thiết lập dataType: 'json' trong cấu hình ajax. Hy vọng điều này là hữu ích. Cảm ơn!

5

Không chắc chắn lý do tại sao, nhưng window.location.href không hoạt động đối với tôi. Tôi đã kết thúc bằng cách sử dụng window.location.replace thay vào đó, mà thực sự làm việc.

$('#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'); 
     } 
    }); 
});