色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

ajax提交后js攔截不到

孫昌合1年前6瀏覽0評論
使用AJAX進行提交后,有時候我們會發現JavaScript無法攔截到提交的結果。這種情況可能是因為網絡延遲或者處理速度較慢導致JavaScript執行完畢后,服務器的響應還未返回到瀏覽器。這篇文章將詳細探討這個問題,并提供一些解決方案。

舉個例子,假設我們在一個網頁中有一個表單,用戶填寫完內容后點擊提交按鈕,利用AJAX將數據發送給服務器進行處理。接下來,我們希望在JavaScript中根據處理結果更新頁面狀態或執行相應操作。

function submitForm() {
var data = {
name: document.getElementById('name').value,
email: document.getElementById('email').value
};
// 利用AJAX將數據發送給服務器
var xhr = new XMLHttpRequest();
xhr.open('POST', '/submit', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
// 服務器響應成功,執行相應操作
// ...
}
};
xhr.send(JSON.stringify(data));
}

上述代碼中,我們先獲取表單中的數據,然后創建一個AJAX請求,將數據發送給服務器。當服務器成功響應后,我們希望執行一些相應操作。然而,由于網絡延遲或處理速度較慢,有時候JavaScript并不能立即攔截到提交的結果。

為了解決這個問題,我們可以添加一個定時器,定期向服務器發送請求查詢處理狀態,直到結果返回成功為止。

function pollResult() {
var xhr = new XMLHttpRequest();
xhr.open('GET', '/poll', true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
var result = JSON.parse(xhr.responseText);
if (result.status === 'processing') {
// 請求結果還在處理中,繼續查詢
setTimeout(pollResult, 1000);
} else if (result.status === 'success') {
// 請求結果已成功返回,執行相應操作
// ...
}
}
};
xhr.send();
}
function submitForm() {
var data = {
name: document.getElementById('name').value,
email: document.getElementById('email').value
};
// 利用AJAX將數據發送給服務器
var xhr = new XMLHttpRequest();
xhr.open('POST', '/submit', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
// 成功提交到服務器,開始查詢結果
setTimeout(pollResult, 1000);
}
};
xhr.send(JSON.stringify(data));
}

在上述代碼中,我們添加了一個名為pollResult的函數,用于定時向服務器發送查詢請求。當服務器返回的結果狀態為"processing"時,說明提交仍在處理中,我們繼續等待并再次發送查詢請求。當結果狀態為"success"時,說明處理成功,我們可以執行相應操作。

通過上述方法,我們可以解決AJAX提交后無法立即攔截到結果的問題。然而,需要注意的是,定時查詢也可能存在一些問題,如服務器過載或處理時間過長。因此,我們需要在實際使用時權衡取舍,并根據實際情況進行調整。