簡體   English   中英

使用JQuery發送.post請求后,需要立即重定向頁面

[英]Need to redirect a page immediately after sending out a .post request with JQuery

仍然要學習,所以要保持謙遜;)-我的網站上發生的事情如下:

  1. 發送AJAX POST請求以使用新事件參與者更新sql數據庫
  2. 發送一些電子郵件通知
  3. 等待服務器返回“確定”以發送電子郵件
  4. 重新加載頁面以顯示新的參與者

事實證明,發送電子郵件最多可能需要5秒鍾或更長時間,我不希望用戶必須等待它完成。 我現在想做的是:

  1. 發送針對SQL的AJAX POST請求
  2. 發送服務器請求以發送電子郵件通知
  3. 在服務器響應#2之前重新加載頁面。

我嘗試發布:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM