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"
};

これを確認できる方法はたくさんあります....

方法 1

person.hasOwnProperty("name")

方法 2

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

方法 3 (非推奨)

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

プロパティの存在を確認したいだけで、必ずしもその値が何であるかを確認したくない場合は、安全なオプションが 2 つあります。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 応答でプロパティを確認するには、さまざまな方法があります。これは簡単にそれを行う1つの方法です。jsonData を直接確認します。PropertyName != null かどうか。

于 2016-08-18T06:51:04.083 に答える
-2

最も簡単な方法は次のとおりです。

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

プロパティがブール値であることを除いて。その後、これは必ずしも希望どおりに機能するとは限りません:)

于 2016-08-18T06:21:13.103 に答える