我正在使用此代码将表单提交到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("Sorry is NOT a valid e-mail address. Try again."); } else { $("#message_ajax") .html("YES! this is A valid e-mail address. DO NOT Try again."); } }, "json" ); if(valid == 'true'){ $("#contact").hide(); } return false; }); });
我知道脚本返回'invalid'值,因为div和css按预期更新,但'valid'变量永远不会设置为'false'.认为这是一个范围问题我已经移动了声明,如果声明周围没有喜悦.
可能的相关问题 - 我正在使用firebug来逐步执行代码,但它只在第一次执行代码时在断点处停止,而且从不再次,但我可以提交表单任意次,它总是按预期响应 - 有效或无效.如你所见,我对jQuery很新.
你在这里混合同步和异步代码.
if(valid == 'true'){ $("#contact").hide(); } return false;
此代码^^^在调用回调之前运行function(data)
.
基本上发生的事情是这样的:
$ .post运行
if(valid =='true')被评估
.submit()函数返回false
调用回调函数(数据)
'有效'变量已设置