如何使用jQuery确定帖子是否在JSONP提要中包含特定类别?

问题描述

| 我需要检测某个帖子是否包含来自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);
任何帮助将不胜感激。     

解决方法

您可能需要以不同的方式检查
hasCategory
-请参阅jQuery文档:   
$.inArray()
方法类似于JavaScript的本机
.indexOf()
方法,因为它找不到匹配项时将返回-1。如果数组中的第一个元素与value匹配,则
$.inArray()
返回0。      因为JavaScript将0大致等同于false(即0 == false,但0!== false),所以如果我们要检查
array
中是否存在
value
,我们需要检查它是否等于(或大于)-1。 所以线
hasCategory = $.inArray(\"specialcategory\",post.categories);
应该
hasCategory = $.inArray(\"specialcategory\",post.categories) >= 0;
但是,如果
myFunction
实际上没有接收到数据数组,这似乎不是您的主要问题。