我已经设置了这个脚本来检查电子邮件地址是否存在于数据库中:
function checkemail(){
var e = document.getElementById("email").value;
if(e != ""){
document.getElementById("emailstatus").innerHTML = 'checking ...';
$.ajax({
type:'get',
url:'{!! URL::to('checkEmailExists') !!}',
data:{'email':e},
success:function(data){
// console.log(data);
if(Object.keys(data).length === 0)
{
document.getElementById("emailstatus").style.color = "red";
document.getElementById("emailstatus").innerHTML = e + " is NOT OK";
}else{
document.getElementById("emailstatus").style.color = "green";
document.getElementById("emailstatus").innerHTML = e + " is OK";
}
},
error:function(){
}
});
}
}
因此,代码运行正常,但唯一的问题来自始终返回 TRUE 的条件检查:
if(Object.keys(data).length === 0)
基本上,如果我输入的电子邮件地址在DB中不存在,则将返回data
(console.log(data)
的结果):
{}
否则,它将返回此obj:
{
"id": 1,
"name": "Myname",
"email": "myemail@yahoo.com",
"email_verified_at": null,
"created_at": "2022-02-09T05:49:27.000000Z",
"updated_at": "2022-02-09T05:49:27.000000Z"
}
因此,我需要正确检查返回的对象是否为空。
但if(Object.keys(data).length === 0)
似乎没有正确检查该条件,因为它始终为 TRUE &因此[email] is OK
语句出现在第页上。
那么如何正确检查返回的对象是否为空呢?
3条答案
按热度按时间fae0ux8s1#
你可以检查一个特定的属性,如果它不在那里,那么它将是
undefined
,这意味着你没有得到一个成功的响应。将
undefined
与||
组合以获得“未设置时的值”,给出:您可以只检查
if (data.id == undefined)
,但在与undefined
进行比较时,需要注意一些问题uajslkp62#
对象.键应该工作:
我建议您仔细检查发送给
success
函数的参数。798qvoo83#
请参阅以下对我有效的解决方案: