Как определить, содержит ли сообщение определенную категорию в фиде JSONP с помощью jQuery? - PullRequest
0 голосов
/ 25 мая 2011

Мне нужно определить, содержит ли пост определенную категорию из фида JSONP.Я не уверен, как читать массив, так как в настоящее время он говорит, что он нулевой.Ссылка работает без проблем, хотя это просто строка.

$.jsonp({
    url         : "theurl",
    dataType    : "jsonp",
    timeout     : 10000,
    success     : myFunction,
    error       : myErrorFunction
});

function myFunction (data) {
    $.each(data, function(i, post){
        var link = post.permalink,
            hasCategory = $.inArray("specialcategory", post.categories);
    });
}

Вот пример моего JSON:

[
    {
        "id": 1,
        "permalink": "http://domain.com",
        "categories": [
            "category1",
            "specialcategory"
        ]
    }
]

Это ошибка, которая появляется в Firebug:

can't convert null to object
d()jquery.js (line 16)
a = "specialcategory"
b = undefined
[Break On This Error] (function(a,b){function ci(a){return d...a:a+"px")}}),a.jQuery=a.$=d})(window);

Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 25 мая 2011

Возможно, вам придется проверить hasCategory по-другому - см. Документацию jQuery:

Метод $.inArray() похож на нативный метод JavaScript .indexOf(), так как он возвращает -1, когдане находит совпадений.Если первый элемент в массиве соответствует значению, $.inArray() возвращает 0.

Поскольку JavaScript обрабатывает 0 как свободно равный ложному (т. Е. 0 == ложь, но 0! == ложь), если мыпроверяя наличие value в array, нам нужно проверить, не равно ли оно (или больше) -1.

Итак, строка

hasCategory = $.inArray("specialcategory", post.categories);

должно быть

hasCategory = $.inArray("specialcategory", post.categories) >= 0;

Но не похоже, что это ваша основная проблема, если myFunction на самом деле не получает массив данных.

...