2016-08-18 2 views
0

ajaxレスポンスオブジェクトにプロパティがあるかどうかを確認する正しい方法は? 私はグーグルで、私が見つけたのは、これにアプローチする方法が違うということです。例えばオブジェクトがプロパティを持っているかどうかを確認する最も良い方法はどれですか?

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

が、確かに他の方法は、たとえば、あります

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

だから私はいくつかの長所と短所は、あなたが私と一緒にこれらを共有してくださいすることができますがあります推測しています。

おかげ

+0

hasOwnPropertyがより受け入れやすいと思います。 – chenop

+0

@chenopが正しいと思いますが、次のようなこともできます: 'var check = ajaxResponse.someProperty ||偽; ' – Derek

+0

@ chenopはい私もそうだと思っていましたが、今日私は既存のプロジェクトで働いていて、2番目の方法を使用しますが、彼らは賢い人です(もちろん)。瞬間。 –

答えて

-2

芋で最も簡単な方法:

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

プロパティはブール値である場合を除き。そして、これは必ずしも望んだ動作しません:)

+1

プロパティが「0」である可能性のある番号である場合、機能しません。または、空の文字列である可能性のある文字列。またはnullの可能性があります。あるいは、 'undefined'という値で存在するかもしれません。 – nnnnnn

0

をの一つは、下記に示すように、オブジェクトが何かあるとしましょう...

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演算子を使用します。

Source

+0

'person.name'が偽であれば、' if(person.name){...} 'でテストが失敗します。 –

+0

うーん... @ニーナ・ソルツあなたは正しい。しかし、その日の終わり、その契約、オブジェクトを書いてアクセスする人はプロパティの種類を知っています。その場合は、「方法3」を避けるべきです。そして私はすでに同じようなメモを追加しています。 – Yasser

+0

* name *を特別にテストしている場合、プロパティ3が空の文字列として存在していても、論理的に名前を持たない場合と同じ*かもしれないので、方法3はおそらくOKです。しかし、OPのより一般的な 'someProperty'では適切ではありません。 – nnnnnn

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が空であるかどうかを確認する必要があります。 結果がjsonData.length == 0場合

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

を次のようにJSONを解析し、JSONであれば、何のプロパティは、結果のためにありません。 jsonの応答でプロパティをチェックする方法はたくさんあります。これは簡単な方法です。 jsonDataを直接チェックしてください。 PropertyName!= nullかどうか。

関連する問題