【发布时间】:2015-02-21 02:58:25
【问题描述】:
我正在尝试编写一个 JS 代码,如果数据库中已经存在给定的数字,它将取消“btn_submit”按钮 .onclick 事件。我使用 AJAX 查询给定数字的数据库,并确定是否应该将数据发送到将上传问题的 .php 站点。为了确定这一点,我需要 numOfRows 变量的值,但是因为我在 AJAX 中设置它,所以它会保持为 0。validation() 函数将在我的 AJAX 查询完成之前完成,这会导致问题总是指出给定的数字不存在于数据库中(numOfRows 将始终保持为 0)。 在我将验证()函数的结尾行中的 numOfRows 与 0 进行比较之前,如何等待 AJAX 查询完成?如果数据库中已经存在该数字,我需要在这一行返回 false:
document.getElementById("btn_submit").onclick = 验证;
谢谢!
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);
}
});
}
【问题讨论】:
-
一种方法是将ajax请求绑定到需要服务器端验证num_rows的表单控件的更改事件。如果尚未返回或失败,则不允许表单提交或启动其他验证
标签: javascript php jquery ajax