AJAX在没有警告框的情况下无法工作
AJAX not working without alert box
我正在尝试使用以下代码:
$('#form1').on('submit', function(){
var txtItemCode = $('#txtItemCode').val();
$.post("userExist.php", {
txtItemCode: txtItemCode,
}, function(data,status){
//alert("Data: " + data + "'nStatus: " + status);
$('#status').html(data);
reply = data;
//alert(reply);
});
alert('');
if (reply=='OK'){
return false;
}
});
我需要检查data=="OK"
并返回false,但当我删除alert
时,它就不再工作了。为什么会这样,我该如何让它发挥作用?
引入警报时它之所以有效,是因为它停止了执行,并为异步调用提供了足够的时间来完成。
您没有得到正确的值,因为当post请求完成并执行回调时,您的javascript已经完成执行。
这里有几个选项:
- 声明一个全局变量并执行同步调用,您可以使用发布的代码ABC执行,也可以在POST调用之前调用
$.ajaxSetup({ async: false })
。将返回值分配给全局变量,并根据该值进行验证 - 使用jQuery的ajaxStop:
$(document).ajaxStop(function() { //check your values here, still need to declare a global });
- 将值作为属性写入DOM中的任何位置的隐藏div/,并有一个计时器定期检查它,直到有值为止
在您的代码中,ajax调用是异步工作的,因此无论您是否得到响应,您的下一行都将被执行。在得到回应之前,同步呼叫不会执行您的下一行。您可以从$.post转换为$.ajax,并使async属性为false。然后,您将能够得到,然后在ajax调用得到响应后,您可以得到"reply"的值。
$.ajax({
type: 'POST',
url: url,
data: data,
success: success,
dataType: dataType,
async:false
});
我想到了一个新想法,请检查一下。
/**
* form submit
*/
$('#form1').on('submit', function() {
if (checkExistence()) {
return false;
}
});
/**
* check existence in db
* @returns {Boolean}
*/
function checkExistence() {
var txtItemCode = $('#txtItemCode').val();
var result = true;
$.post("http://localhost/test.php", {
txtItemCode: txtItemCode,
}, function(data, status) {
//alert("Data: " + data + "'nStatus: " + status);
if (data == 'OK') {
$('#status').html(data);
result = true;
} else {
$('#txtItemCode').val('').focus();
$('#status').html("Code is already existing, please provide another one:)")
result = false;
}
});
return result;
}
注意:您可以交换结果和检查的值。
相关文章:
- JavaScript while循环没有'不能在有条件的情况下工作
- 如何使html链接标签可以在没有标签的情况下工作
- Javascript变量在没有var的情况下工作
- 有没有一种方法可以让jQuery日期选择器在没有年份的情况下工作
- 窗口clearInterval()在没有参数的情况下工作
- 如何使HTML5在没有JS或Jquery的情况下工作
- 复选框检查器在表中不起作用.代码在没有表标记的情况下工作
- 让脚本在没有 .text 的情况下工作
- 我如何让这个 JavaScript 数字猜谜游戏在没有“while”或“for”循环的情况下工作
- 可以't使jQuery Sortable在没有列的情况下工作
- Facebook javascript sdk在没有ssl的情况下工作
- jQuery插件可以在没有元素的情况下工作
- Z索引无法在位置固定的情况下工作
- Chai这样的断言库如何在不强制调用函数的情况下工作
- google驱动器api-copyfile仅在具有访问驱动器中所有文件的权限的情况下工作(但jst需要复制)
- Javascript-目标DOM在一种情况下工作,而不是在另一种情况
- 使提交表单在不重定向或刷新的情况下工作
- .click函数在没有参数的情况下工作,但不使用参数
- 在IE中获得插入符号位置在一种情况下工作,在另一种情况下不工作
- 重定向到时找不到子路由,但在其他情况下工作正常