![](/img/trans.png)
[英]How can I redirect to a page after sending a JQuery get request in rails
[英]Need to redirect a page immediately after sending out a .post request with JQuery
仍然要學習,所以要保持謙遜;)-我的網站上發生的事情如下:
事實證明,發送電子郵件最多可能需要5秒鍾或更長時間,我不希望用戶必須等待它完成。 我現在想做的是:
我嘗試發布:
window.location.replace("");
之前
$.post(
'/_x_/email/tag',
{
event_id: event_id,
tagged_id: tag_id,
type: 'tag_event_ongoing'
}
);
但是服務器仍將等待響應。 我也嘗試過:
document.open();
$.get("",function(data) {
document.write(data);
})
document.close();
在發布請求之前-這會重新加載頁面,但是由於某些原因,除非我手動重新加載,否則所有javascript都無法正常工作。
編輯:我也嘗試過使用適當的$ .ajax()調用:
var email = $.ajax({
url: '/_x_/email/tag',
type: 'POST',
data: {
event_id: event_id,
tagged_id: tag_id,
type: 'tag_event_ongoing'
},
dataType: "json",
success: function (res) {
window.location.replace("");
}
});
附加說明:我的電子郵件發送代碼被編寫為sql插入的回調-因此,僅當SQL插入成功時才發送電子郵件。 我認為這並不重要,但以防萬一。
有人知道我該怎么解決嗎?
您應該將服務器平台配置為在后台發送電子郵件。 服務器要做的就是確認收到了來自ajax帖子的信息,在后台生成郵件程序,並讓用戶步入正軌。 我無法想到的唯一原因是,您要重定向到的頁面是否取決於所發送的電子郵件。 這將需要某種異常通知或在發生錯誤的情況下“重試”該過程的方法。
這是解決此問題的正確方法,但我想您可能可以使用Java hack。
我會考慮使用完整的$.ajax
調用代替post
。 這將給您更多的控制權,因為您可以掛接幾個ajax事件。
您還可以從服務器返回新事件參與者的列表,然后可以完全跳過重新加載頁面的操作。 如果重新加載整個頁面,可能會導致無法確定AJAX調用是否或何時完成的情況。
您是針對項目1和2進行兩次單獨的AJAX調用,還是一次調用服務器同時執行兩項操作? 如果要在一個函數中完成所有操作,則可以將服務器端調用分成兩個函數,並在客戶端上進行兩個離散的ajax調用。 這樣,當數字1返回時,您無需等待數字2就可以更新屏幕。
對於您提供的少量代碼,這是我能做的最好的事情。
使用在jQuery.post()... [,success(data,textStatus,jqXHR)中指定的回調。 讓您知道何時發布數據,並以一種快樂的方式服務於用戶下一步要做的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.