0

文字列、配列、オブジェクト、または何も返さない PHP 関数への ajax 呼び出しがあります。(はい、これを正規化して、可能な戻り値の型が 1 つだけになるようにするのが理想的であることはわかっていますが、これは主任開発者によって選択されたサードパーティのライブラリであり、それを変更することはできません。) 簡単な方法はありますか?存在するかどうかをテストできますか?私はこれを試しました:

function doSomething(data)  //data is what's returned by a previous ajax call
     if(data.unavailableItems) {
        // do something
     }
}

しかし、関数に入るデータ配列に要素が存在しないdo something場合でも、ヒットしています。unavailableItems本当に明らかな何かを見逃しているに違いないことはわかっていますが、一生それを見つけることはできません。

関数に入力されるデータの例を次に示します。ご覧のとおり、 という要素はありませんunavailableItems:

ここに画像の説明を入力

4

2 に答える 2

2
if(data != void(0) && data.unavailableItems != void(0)){
  //exists
}

ノーマンがコメントで指摘したように.. void 0 の意味をチェックアウトする必要があります

于 2013-05-24T20:21:23.840 に答える
1

オブジェクトにプロパティが含まれているかどうかを確認するための適切なツールは、obj.hasOwnProperty(prop)です。

if(data.hasOwnProperty("unavailableItems")){

}

また、John Resig からシムが入手可能であることにも注意してください。obj.hasOwnProperty

function hasOwnProperty(obj, prop) {
 var proto = obj.__proto__ || obj.constructor.prototype;
 return (prop in obj) &&
    (!(prop in proto) || proto[prop] !== obj[prop]);
}

if ( Object.prototype.hasOwnProperty ) {
 var hasOwnProperty = function(obj, prop) {
    return obj.hasOwnProperty(prop);
 }
}
于 2013-05-24T20:21:35.153 に答える