gpt4 book ai didi

php - Ajax调用太慢? JavaScript 和 PHP

转载 作者:行者123 更新时间:2023-12-02 19:12:37 25 4
gpt4 key购买 nike

我正在设置注册表。该表单有 7 个正在测试验证的字段。其中2个有特殊验证;我对 PHP 类进行了 Ajax 调用,在该类中我向该类发送了一个 email_string,测试这样的电子邮件是否已存在于我的数据库中(避免重复)。

params = {};
params['source'] = 'checkEMail';
params['email'] = email
$.ajax({
type: 'POST',
url : 'some_class.php',
data : params,
success: function(msg)
{
if(msg > 0) /* email exists */
is_error = true;
}
});

在我的 PHP 类(class)中,我得到了这样的内容:

$final = mysql_fetch_assoc(foo);
echo ($final) ? 1 : 0;

我正在测试数据,事实上 - 如果电子邮件存在,我会得到“1”,如果不存在,我会得到“0”。

有趣的是,这个片段工作正常只要此表单中存在其他错误 - 例如空用户名。“is_error”是一个 bool 值,在脚本开始时设置为 false,如果一次验证失败,则为 true。然后,最后我得到了这个:

if(is_error)
{
error.show();
error.empty().append('some html foo');
}
else
{
$('form').submit();
error.empty().hide();
}

那么,尽管 is_error 设置为 true,但表单仍会发送,怎么可能呢?我能想到的唯一原因是表单是在“is_error”被测试之前发送的 - 但表单的发送位于脚本的最底部。

哦,我这样调用它:

<script type="text/javascript">
$("#reg_submit").click(function(event) {
event.preventDefault();
checkReg();
});
</script>

最佳答案

我建议您不要在脚本末尾添加 if(is_error){ 部分,而是在 ajax 请求完成中执行此操作,以避免竞争条件:

$.ajax({
type: 'POST',
url: 'some_class.php',
data: params,
success: function(msg) {
if (msg > 0) /* email exists */
is_error = true;
},
complete: function() {
if (is_error) {
error.show();
error.empty().append('some html foo');
} else {
$('form').submit();
error.empty().hide();
}
}
});

关于php - Ajax调用太慢? JavaScript 和 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13514322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com