javascript - jquery - javascript 变量不持有值(value)

标签 javascript jquery ajax

我正在使用此代码将表单提交到 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/

相关文章:

javascript - Ajax每秒发送请求并使CPU使用率高

javascript - 语法错误 : identifier starts immediately after numeric literal asp. 网络

javascript - 在 IE 中覆盖用户定义的样式表

javascript - 使用 codedUI 选择网页中隐藏的单选按钮

php - 使用 Zend (1.12.17) 和 Ajax 的动态下拉列表

php - 通过 Yii2 中的链接使用 AJAX 提交时的 CSRF 问题

javascript - 编辑 Donut Highchart

javascript - 获取在文本区域输入的最后一个词

c# - 如何从具有复杂键的 FormCollection 构建 C# 对象

javascript - 如何删除标记信息窗口中的 "x"关闭按钮?