2

我想通过 js/jquery 检查 json 数组中是否存在值:

[{"pathway_action_fk":"1"},{"pathway_action_fk":"2"},{"pathway_action_fk":"4"}]

我试过没有成功:

 $.ajax({
       type: "POST",
       url: "scripts/get_actions_allowed.php",
       data: 'pathway=' + pathway_pk,
      dataType: "json",
       success: function(returnedData) {
if ($.inArray('1', returnedData)){
    $('#script').addClass('active');
}...

如果我在成功后放入:

alert(returnedData);

我得到[object Object],[object Object]了应该返回的正确数量的对象。删除 json 作为 dataType 显示正确的值...

4

4 回答 4

4

您的数组包含 JSON 对象。因此,您需要查看每个对象的内部以查看其字段是否具有所需的值(或者至少,这就是我收集到的根据您的代码判断您正在尝试做的事情)。

所以也许是这样的:

$(returnedData).each(function() {
    if (this.pathway_action_fk == 1) {
        $('#script').addClass('active');
    }
});

示例:http: //jsfiddle.net/qvsbT/

于 2013-08-05T04:52:54.833 回答
1

数组的元素是对象,而不是字符串。您要检查的值是pathway_action_fk这些对象的属性。所以你必须在检查之前向下钻取。

if ($.inArray('1', returnedData.map(function(x) {
    return x.pathway_action_fk;
})) != -1);

此外,您需要比较$.inArraywith的结果-1——它返回找到的元素的索引,可以是 0,而不是布尔值。

于 2013-08-05T04:52:34.863 回答
1
$.ajax({
    type: "POST",
    url: "scripts/get_actions_allowed.php",
    data: 'pathway=' + pathway_pk,
    dataType: "json",
    success: function(returnedData)
    {
        for(var i=0, max=returnedData.length; i<max; i++)
        {
            if(returnedData[i].pathwy_action_fk==='1')
            {
                $('#script').addClass('active');
                break;
            }
        }
    }
})
于 2013-08-05T04:54:18.407 回答
0
  var JSN = 
[
    {
        "email": "msshah@gmail.com"
    }, 
    {
        "email": "ms@gmail.com"
    },
    {
        "email": "ams@gmail.com"
    },
    {
        "email": "no@gmail.com"
    }
];
// var hasMatch =false;
$(JSN).each(function() {
    if (this.email == "yes@gmail.com") {
        alert("found:  " + JSON.stringify(this));
    }else{
        alert('Not Found');

    }

});

示例:https ://jsfiddle.net/wfh9ur1j/5/

于 2019-01-25T10:14:14.983 回答