我遇到了一個問題,我的帖子請求由于我無法理解的原因而被重復。我正在使用 jQuery POST 請求將表單提交到 php 腳本以將其插入 SQL 資料庫。
它只發生在某些情況下,而不是始終如一。9/10 次它按預期作業,但有時 ajax 呼叫重復 2 或 3 次。
在此處輸入圖片說明
重復代碼塊:
函式提交日志(){
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 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();
}
});
}
當使用按鈕復制問題時,我無法讓它重復。
提前感謝一堆人提供的任何提示,讓我朝著正確的方向解決這個棘手的問題!
uj5u.com熱心網友回復:
這很可能取決于聽眾的submitLog().
檢查您沒有使用會多次觸發的偵聽器。
如果檢查太多,只需在您submitLog()的 . 然后在您的發布請求后將其設定為 false。這將阻止重復的按鈕按下等發生或在聽眾中發生任何有趣的事情。
如果您需要重新觸發該函式,請在變數上設定超時(或在 ajax 完成后設定)以將其重置為 true。
例子:
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);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/358760.html
標籤:javascript php 查询
