簡體   English   中英

Ajax發布請求的順序變得混亂

[英]order of ajax post requests getting mixed up

我有一個頁面,用戶在其中將數據(通過ajax)發送到php頁面,該頁面將其輸入到數據庫。 但是,有時,當我檢查數據庫時,請求變得混亂。

基本上,用戶在事件發生時輸入事件,然后單擊“提交”以將其發送到數據庫。 有時,用戶會在發送前記錄2個事件,在這種情況下,一次發送2個事件。 這種情況是當他們偶爾切換時。

這是相關的代碼。

    i = 0;
    while (event[i]) {

        var post_data =  //post data for event[i]

        $.ajax({  
            type: "POST",  
            url: "save_event.php",  
            data: post_data,
        }); 

        event.splice(0,1);
    }

Event []是一個包含用戶正在提交的事件的數組。 每個事件都是具有各種屬性的對象。 通常,數組中只有1個對象,但有時也有2個。我刪除了執行post_data的部分,因為它跨越了3行。

可能有一半的時間有2個事件,它們在數據庫中被逆轉。 有辦法消除嗎? 還是完全取決於服務器處理時間的長短,並且偶爾會在處理完第一台服務器之前先完成第二台服務器?

由於AJAX請求是異步並行發送的,因此,這完全取決於瀏覽器和服務器的處理時間。 您可以添加async: false選項,但這將在請求期間凍結瀏覽器,因為它們將不再是異步的。

我建議您將訂單列添加到數據庫中。

var post_data = { order: i, ... };

另一種選擇是發送包含所有數據的單個AJAX請求。

如果訂單很重要,則可以隨序列號一起發送並在服務器中找出順序號,或者同時發送所有事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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