我一直在使用php和ajax来验证数据库中是否存在以表单形式插入的电子邮件。
我正在使用jquery将电子邮件值发送到我的php文件,如果找到电子邮件,则返回一条消息。我的代码工作正常,但是我希望如果找到电子邮件,则光标将集中在#usu_email字段上,直到更改电子邮件为止。之后,它应该允许我继续下一个领域。
这是我正在使用的jquery代码:
function getemail(value) {
var usumail = $("#usu_email").val();
$.ajax({
type: "POST",
url: "ajax_email.php",
data: "usu_email=" + usumail,
success: function(data, textStatus) {
if (data !== null) {
$("#eresult").html(data);
$("#usu_email").focus();
}
},
});
};
我的问题是,如果数据库中不存在和电子邮件,则光标将继续关注#usu_email字段,并且不允许我继续下一个字段。
对于这个问题,我将不胜感激,因为我对jquery的了解很少。
答案 0 :(得分:0)
取决于您期望的数据类型(简单文本响应或JSON),但是起初我会开始用if(data !== null)
替换if(typeof data != "undefined" && data !== null && data != "")
,因为返回的响应可能只是空的并且不为NULL。
如果它不起作用,则应考虑将php代码添加到问题中,以便我们在找不到匹配的电子邮件时可以准确地找出返回的内容。
答案 1 :(得分:0)
首先...您的条件===0
始终将为true,因为总会提供数据...为空字符串。
唯一不存在if (data !== null)
的情况是Ajax错误...并且该条件甚至不会被评估,因为data
回调将不会执行。
接下来,我假设您的Ajax请求是在success
模糊条件下触发的...否则,我不知道您如何实现«不允许我继续»。 / p>
以这种方式修改它以比较响应:
$("#usu_email")
在PHP方面,您必须提供json响应。看起来像这样:
function getemail(value) {
var usumail = $("#usu_email").val();
$.ajax({
type: "POST",
url: "ajax_email.php",
data: "usu_email=" + usumail,
datatype: "json",
success: function(data) { // There is only one argument here.
// Display the result message
$("#eresult").html(data.message);
if (data.email_exist == "yes") {
$("#usu_email").focus();
}
if (data.email_exist == "no") {
// Something else to do in this case, like focussing the next field.
}
},
});
};
请注意不要回声。甚至没有空格或行返回。