簡體   English   中英

ajax/jquery POST 請求的不必要重復

[英]Unwanted repeats of ajax/jquery POST request

我遇到了一個問題,由於我無法理解的原因,我的帖子請求被重復。 我正在使用 jQuery POST 請求將表單提交到 php 腳本,以將其插入 SQL 數據庫。

它只在某些情況下發生,而且並非始終如一。 9/10 次按預期工作,但有時 ajax 調用重復 2 或 3 次。

在此處輸入圖像描述

重復代碼塊:

function submitLog(){

let log = document.getElementById('logContent').value;
let project = document.getElementById('logger_active_project').innerHTML;
let category = document.getElementById('categorySelect').value;
let projectID = document.getElementById('logger_active_project_id').value;
let submit = document.getElementById('submit');
submit.disabled = true;

console.log('starting ajax post request');

$.post('./includes/logger/scripts/add_log.php', {
    log:log,
    project:project,
    category:category,
    project_id:projectID

}, function(data, status){
    document.getElementById('logContent').value= "";
    submit.disabled = false;
    console.log('ajax callback fired.' + data);
    
})

} 編輯:

它似乎只在與以下 function 一起使用時才會發生:

function submitLogByEntering(){ let log = document.getElementById('logContent');

log.addEventListener("keyup", function(event) {
    // Number 13 is the "Enter" key on the keyboard
    if (event.keyCode === 13) {
      // Cancel the default action, if needed
      event.preventDefault();
      submitLog();
    }
  });
}

當使用按鈕復制問題時,我無法讓它重復。

提前非常感謝您提供的任何提示,讓我找到正確的方向來解決這個熱點問題!

它很可能submitLog()的偵聽器。

檢查您沒有使用會多重觸發的偵聽器。

如果檢查太多,只需在submitLog()之外設置一個測試變量,請將其設置為 true 並測試是否為 true,然后觸發 ajax。 然后在您的發布請求后將其設置為 false 。 這將阻止重復的按鈕按下等發生或聽眾中任何有趣的事情。

如果您需要重新觸發 function 對變量設置超時(或在 ajax 完成后設置)以將其重置為真。

例子:

 var test = true; function submitLog() { if (test) { let log = document.getElementById('logContent').value; let project = document.getElementById('logger_active_project').innerHTML; let category = document.getElementById('categorySelect').value; let projectID = document.getElementById('logger_active_project_id').value; let submit = document.getElementById('submit'); submit.disabled = true; console.log('starting ajax post request'); $.post('./includes/logger/scripts/add_log.php', { log: log, project: project, category: category, project_id: projectID }, function (data, status) { document.getElementById('logContent').value = ""; submit.disabled = false; console.log('ajax callback fired.' + data); }); test = false; setTimeout(function () { test = true; }, 5000); } }

暫無
暫無

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

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