JQuery проверить, существует ли JSON Var - PullRequest
4 голосов
/ 24 мая 2011

Как я могу с помощью jquery проверить, существует ли ключ / значение в результирующем json после getJSON?

function myPush(){
    $.getJSON("client.php?action=listen",function(d){
        d.chat_msg = d.chat_msg.replace(/\\\"/g, "\"");
        $('#display').prepend(d.chat_msg+'<br />');
        if(d.failed != 'true'){ myPush(); }
    });
}

По сути, мне нужен способ узнать, существует ли d.failed и если он = 'true', то не продолжайте циклически нажимать.

Ответы [ 3 ]

11 голосов
/ 24 мая 2011

Для этого вам не нужен jQuery, только JavaScript.Вы можете сделать это несколькими способами:

  • typeof d.failed - возвращает тип ('undefined', 'Number' и т. Д.)
  • d.hasOwnProperty('failed') - на случай, если он унаследован
  • 'failed' in d - проверить, было ли оно когда-либо установлено (даже не определено)

Вы также можете проверить d.failed: if (d.failed), но это вернет falseесли d.failed не определено, ноль, ложь или ноль.Для простоты, почему бы не сделать if (d.failed === 'true')?Зачем проверять, существует ли он?Если это правда, просто верните или установите какой-нибудь логический тип.

Ссылка:

http://www.nczonline.net/blog/2010/07/27/determining-if-an-object-property-exists/

1 голос
/ 24 мая 2011

Нашел вчера. CSS как селекторы для JSON

http://jsonselect.org/

0 голосов
/ 24 мая 2011

Вы можете использовать javascript идиому для операторов if вроде этого:

if (d.failed) {
    // code in here will execute if not undefined or null
}

Все просто.В вашем случае это должно быть:

if (d.failed && d.failed != 'true') {
    myPush();
}

По иронии судьбы это читается как "если d.failed существует и имеет значение" true "", как написала ОП в вопросе.

...