我正在使用此代码将表单提交到 php 脚本:
var valid = 'true';
$(document).ready(function(){
$("#contact").submit(function(){
$.post("process.php",
$("#contact").serialize(),
function(data){
if(data.email_check == 'invalid'){
valid = 'false'; //<---not set!
$("#email1").addClass('missing');
$("#message_ajax")
.html("<div class='errorMessage'>Sorry is NOT a valid e-mail address. Try again.</div>");
} else {
$("#message_ajax")
.html("<div class='errorMessage'>YES! this is A valid e-mail address. DO NOT Try again.</div>");
}
}, "json"
);
if(valid == 'true'){
$("#contact").hide();
}
return false;
});
});
我知道脚本正在返回“无效”值,因为 div 和 css 按预期更新,但“有效”变量永远不会设置为“假”。认为这是一个范围问题,我没有高兴地移动了声明和 if 语句。
可能的相关问题 - 我正在使用 firebug 逐步执行代码,但它只在代码第一次执行时停在我的断点处,再也不会,但我可以多次提交表单并且它总是按预期响应 - 有效或无效。如您所见,我是 jQuery 的新手。
最佳答案
您在这里混合了同步和异步代码。
if(valid == 'true'){
$("#contact").hide();
}
return false;
此代码 ^^^ 在回调 function(data)
被调用之前运行。
基本上发生的事情是这样的:
- $.post 运行
- if(valid == 'true') 被计算
- .submit() 函数返回 false
- 调用回调函数(数据)
- 设置“有效”变量
关于javascript - jquery - javascript 变量不持有值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1909828/