[英]How to check if data returned from ajax as json is empty object or not
我已經設置了這個腳本來檢查數據庫中是否存在 email 地址:
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)
基本上,如果我輸入數據庫中不存在的 email 地址,這將作為data
返回( console.log(data)
的結果):
{}
否則,它將返回這個對象:
{
"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"
}
所以我需要正確檢查返回的 object 是否為空。
但看起來if(Object.keys(data).length === 0)
沒有正確檢查該條件,因為它始終為真,因此[email] is OK
語句出現在頁面上。
那么如何正確判斷返回的object是否為空呢?
您可以檢查一個特定的屬性,如果它不存在那么它將是undefined
,這意味着您沒有得到成功響應。
結合undefined
與||
要獲得“未設置值”,給出:
success:function(data) {
var success = (data.id || 0) > 0;
您可以只檢查if (data.id == undefined)
但在與undefined
進行比較時有許多注意事項
請參閱以下對我有用的解決方案:
$.ajax({
url: url,
type: 'POST',
data: { par1: value1,
par2: value2 },
dataType: 'JSON',
contentType: 'application/x-www-form-urlencoded; charset=utf-8',
success: function(response)
{
if(Object.keys(response).length > 0)
{
//there is valid returned response
}
else
{
//no response keys returned
}
},
error: function (x, h, r) {
//deal with errors....
}
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.