无法在JSON数组中找到项目

时间:2014-02-23 18:58:55

标签: javascript jquery ajax json

Hy to all, 我有一些问题,一些代码不会引发错误,但确实不起作用。 我有这样的Ajax调用:

function getroleitems(ruolo){
fun = new Array();
$.ajax({
type: "POST",
data: {id: ruolo},
url: "getroleitems.php",
success: function(data){
    fun = data;
    console.log(fun);
    for (var i=0;i<44;i++){

    if(fun.indexOf("i")>-1){
        alert('trovato '+i);
        $('#'+i).attr('checked', true);
    }
    }
},dataType:"json"
});

这从db得到一个数字数组(只有1到43之间的所有数字中的一些)。一个例子是:[“0”,“27”,“31”,“30”,“32”,“33”,“8”,“29”,“19”,“42”]。 关键是我不能用1和43之间的所有数字(for循环)来评估这个数组,因为for循环中的if永远不会计算为true。我试过没有运气的$ .inArray和indexOf。 我究竟做错了什么? 提前致谢 Lelio

5 个答案:

答案 0 :(得分:3)

您可以通过在选择器中使用,来完全跳过循环。

if (fun.length) // only do this if there is something to do
    $('#' + fun.join(', #')).attr('checked', true);

此外,值得注意的是,使用 az 以外的字符开始 id 可能会产生意外结果,即使在 HTML5中允许< / em> spec。您可能希望在数字部分前加上字母前缀。

答案 1 :(得分:1)

fun.indexOf("i")更改为fun.indexOf(''+i)

答案 2 :(得分:0)

if(fun.indexOf("i")>-1){

你的“i”介于双引号之间而不被视为变量如果你尝试这样做: if(fun.indexOf(''+i)>-1){

答案 3 :(得分:0)

您所要做的就是:

fun.each( function ( i ) {
    $( '#' + i ).attr( 'checked' , true );
});

答案 4 :(得分:0)

尝试以下代码:

function getroleitems(ruolo){
fun = new Array();
$.ajax({
type: "POST",
data: {id: ruolo},
url: "getroleitems.php",
success: function(data){
    fun = data;
    console.log(fun);
    for (var i=0;i<44;i++){

    if(fun.indexOf(i.toString())>-1){
        alert('trovato '+i);
        $('#'+i).attr('checked', true);
    }
    }
},dataType:"json"
});

我在if条件

中将“i”更改为i.toString()