【问题标题】:AJAX Jquery PHP Validation of Form表单的 AJAX Jquery PHP 验证
【发布时间】:2015-01-30 20:48:25
【问题描述】:

对以下 jQuery 代码不满意。应该在提交时验证表单输入。密码设置正确。第一次提交时,err 为真。第二次提交(密码不变),err正确设置为false。

        var err = true;
        $( "#signupform" ).submit(function( event ) {
            var span_supassword = $('#span_supassword');
            var password        = $("#supassword").val();
            $.ajax({
                url:        '/apps/ajax/signupvalidate.php',
                data:       'action=checkpassword&password=' + password,
                dataType:   'json',
                type:       'post',
                success:    function (j) {
                    if (j.passwordmsg) {
                        err = true;
                        span_supassword.html(j.passwordmsg);
                    }
                    else { err = false; }
                }
            });
            if (err) { event.preventDefault(); }
        });

有什么想法或建议吗?

【问题讨论】:

  • 你的数据在我看来不像 json
  • 不一定是 JSON @Pascamel
  • 您是否在浏览器的控制台 Daniel 中查看了请求/响应?有错误吗?
  • 顺便说一句,数据是 JSON。但是,感谢您的反馈。

标签: php jquery ajax validation


【解决方案1】:

您调用“异步”(不同步 = 调用网络服务器,当得到答案时启动“成功”功能)查询网络服务器,不要等待答案! 只需检查“err”变量,首先“提交”它是默认的“err = true”,当您再次单击提交时,“err”充满了来自网络服务器的答案,它显示了真正的价值。 如果您在本地 PC 网络服务器上进行测试,它应该会在 ~0.1 秒内生成答案,然后它会调用“成功”函数!]。 非常愚蠢的解决方案是:

err = null; // delete value every call
var span_supassword = $('#span_supassword');

...(jquery 代码)...

while(err == null)
{// freez web browser until you get answer from server
}
if (err) { event.preventDefault(); }

但它会冻结网站,直到它从网络服务器获得答案。


真正的jQuery解决方案: 1. 将“更改”事件添加到您要验证的所有“输入”字段。 2. 每个'change' 事件都执行AJAX 来验证当前字段值。 3. 将验证结果保存在 'validationPasswordField = answerFromAjax' 等变量中 4. 在“提交”事件中执行如下操作:

if(!validationPasswordField || !validationUsernameField || !validationAcceptedRegistrationRules)
    {
// if any validation failed (is 'false') block submit
    e.preventDefault();
    }

【讨论】:

  • 精彩,完美!第二个更好的解决方案效果很好。谢谢!抱歉,我不能给你打超过 1 分或给你打更多分 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多