1

我想问一下检查 ajax 响应对象是否具有属性的正确方法。我用谷歌搜索,我发现有不同的方法可以解决这个问题。

例如:

    if(ajaxResponse.hasOwnProperty('someProperty')){
       //do blah blah
    }

但肯定还有其他方法,例如:

    if(typeof ajaxResponse.someProperty !== 'undefined')){
       //do blah blah
    }

所以我猜有一些优点和缺点,你能和我分享一下。

谢谢

4

3 回答 3

1

假设您的对象类似于下面显示的对象...

var person = {
    name: "Nicholas"
};

有很多方法可以用来检查这个......

方法一

person.hasOwnProperty("name")

方法二

if ("name" in person){
    //property exists
}

方法 3(不推荐)

//doesn't accurately test for existence
if (person.name){
    //yay! property exists!
}

如果您只想检查属性是否存在,而不一定要检查它们的值可能是什么,那么您有两个安全的选择:hasOwnProperty()in运算符。hasOwnProperty()如果您只想检测自己的属性,则应使用属性方法。如果您想测试属性是否存在并且不关心它是自己的属性还是对象属性,那么 in 运算符就是要使用的运算符。

资源

于 2016-08-18T06:24:12.090 回答
0
 $.ajax({
            type: "POST",
            url: "frmSample.aspx/LoadSample",
            data: '',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {     
               var jsonData = $.parseJSON(data.d);    
            },
            error: function OnError(xhr) {           
            }
        });

假设如果在 ajax 调用中发生任何错误,则响应直接指向错误,它不会成功。如果将空数据作为结果传递,则 data.d 将为 ''。因此,在解析前需要检查 data.d 是否为空。如果结果是Json,解析json如下

var jsonData = $.parseJSON(data.d);

如果jsonData.length == 0,则结果不存在任何属性。有很多方法可以检查 json 响应中的属性。这是一种简单的方法。直接查看jsonData。PropertyName != null 与否。

于 2016-08-18T06:51:04.083 回答
-2

imo最简单的方法是:

if (ajaxResponse.someProperty){
//do stuff
}

除了属性是布尔值。那么这不一定会按要求工作:)

于 2016-08-18T06:21:13.103 回答