gpt4 book ai didi

javascript - 如何等待ajax请求?

转载 作者:可可西里 更新时间:2023-10-31 22:12:19 25 4
gpt4 key购买 nike

我正在尝试编写一个 JS 代码,如果给定的数字已经存在于数据库中,它将取消“btn_submit”按钮的 .onclick 事件。我使用 AJAX 查询数据库中给定的数字,并确定是否应将数据发送到将上传问题的 .php 站点。为了确定这一点,我需要 numOfRows 变量的值,但因为我在 AJAX 中设置了它,所以它将保持为 0。validation() 函数将在我的 AJAX 查询完成之前完成,这会导致始终声明给定数字不存在的问题存在于数据库中(numOfRows 将始终保持为 0)。在将 validation() 函数的结束行中的 numOfRows 与 0 进行比较之前,如何等待 AJAX 查询完成?如果该号码已存在于数据库中,我需要在此行返回 false:

document.getElementById("btn_submit").onclick = validation;

谢谢!

var textAreaList;
var numOfRows = 0;
var finished = false;

document.getElementById("btn_submit").onclick = validation;

textAreaList = document.getElementsByClassName("text_input");

function validation() {
loadNumRows();

try {
document.getElementById('failure').hidden = true;
}
catch(e) {
console.log(e.message);
}
textAreaList = document.getElementsByClassName("text_input");
var failValidation = false;
for (var i = 0; i < textAreaList.length; i++) {
console.log(textAreaList[i]);
if (textAreaList[i].value == "") {
textAreaList[i].style.border = "2px solid #ff0000";
failValidation = true;
} else {
textAreaList[i].style.border = "2px solid #286C2B";
}
}

return !(failValidation || numOfRows != 0);
}

function loadNumRows(){
$.ajax({
url: 'php/SeeIfNumberExists?number=' + document.getElementById('number_inp').value,
type: "GET",
cache: false,
success: function (html) {
numOfRows = parseInt(html);
}
});
}

最佳答案

使用 async/await 和像 Babel 这样的转译器来让它在旧的浏览器中工作。您还必须从 npm 安装这个 Babel 预设和 polyfill:

npm i -D babel-preset-env babel-polyfill

然后

function getData(ajaxurl) { 
return $.ajax({
url: ajaxurl,
type: 'GET',
});
};

async function test() {
try {
const res = await getData('https://api.icndb.com/jokes/random')
console.log(res)
} catch(err) {
console.log(err);
}
}

test();

.then 回调只是编写相同逻辑的另一种方式。

getData(ajaxurl).then((res) => {
console.log(res)
});

关于javascript - 如何等待ajax请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27612372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com