Как определить, содержит ли сообщение определенную категорию в канале 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
на самом деле не получает массив данных.