Как определить, содержит ли сообщение определенную категорию в канале JSONP, используя jQuery?

Мне нужно определить, содержит ли сообщение определенную категорию из фида 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

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

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

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

Итак, строка

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

должен быть

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

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