Javascript 在JSON数组中找不到项

Javascript 在JSON数组中找不到项,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,大家好, 我有一个问题,一些代码没有抛出错误,但实际上不工作。 我有这样一个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;

大家好, 我有一个问题,一些代码没有抛出错误,但实际上不工作。 我有这样一个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"
});
函数getroleitems(ruolo){
fun=新数组();
$.ajax({
类型:“POST”,
数据:{id:ruolo},
url:“getroleitems.php”,
成功:功能(数据){
乐趣=数据;
console.log(乐趣);
对于(变量i=0;i-1){
警报('trovato'+i);
$('#'+i).attr('checked',true);
}
}
},数据类型:“json”
});
这将从一个db中获得一个数字数组(只有1到43之间的部分数字)。例如:[“0”、“27”、“31”、“30”、“32”、“33”、“8”、“29”、“19”、“42”]。 关键是,我无法根据1和43之间的所有数字(for循环)计算这个数组,因为for循环中的if永远不会计算为true。我尝试了$.inArray和indexOf,但没有任何运气。 我做错了什么? 提前谢谢 Lelio

if(fun.indexOf(“i”)>-1){

您的“i”介于双引号之间,不被视为变量,如果您尝试以下操作,会怎么样:
if(fun.indexOf(''+i)>-1){
if(fun.indexOf(“i”)>-1){

您的“i”介于双引号之间,不被视为变量,如果您尝试以下操作,会怎么样:
if(fun.indexOf(''+i)>-1){

您所要做的就是:

fun.each( function ( i ) {
    $( '#' + i ).attr( 'checked' , true );
});
你所要做的就是:

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

请尝试以下代码,它将正常工作:

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"
});
函数getroleitems(ruolo){
fun=新数组();
$.ajax({
类型:“POST”,
数据:{id:ruolo},
url:“getroleitems.php”,
成功:功能(数据){
乐趣=数据;
console.log(乐趣);
对于(变量i=0;i-1){
警报('trovato'+i);
$('#'+i).attr('checked',true);
}
}
},数据类型:“json”
});

在您的if条件下,我已将“I”更改为I.toString()

请尝试以下代码,它将正常工作:

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"
});
函数getroleitems(ruolo){
fun=新数组();
$.ajax({
类型:“POST”,
数据:{id:ruolo},
url:“getroleitems.php”,
成功:功能(数据){
乐趣=数据;
console.log(乐趣);
对于(变量i=0;i-1){
警报('trovato'+i);
$('#'+i).attr('checked',true);
}
}
},数据类型:“json”
});

我已将if条件下的“I”更改为I.toString()

您可以使用选择器中的
完全跳过循环

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

此外,可能值得注意的是,以a-z以外的字符开头的id可能会产生意外的结果,即使HTML5规范允许这样做。您可能希望在数字部分之前添加字母前缀。

您可以使用选择器中的
完全跳过循环

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

此外,可能值得注意的是,以a-z以外的字符开头的id可能会产生意外的结果,即使HTML5规范允许这样做。您可能希望在数字部分之前加上前缀。

fun.indexOf(“i”)
更改为
fun.indexOf('+i)
更改
fun.indexOf(“i”)
to
fun.indexOf(“”+i)
“i”
是一个字符串。它永远不会在数字中找到。您在数组中查找的是文本字符串
“i”
,而不是它的值……除此之外,服务器还返回一个数字字符串数组,而不是数字数组。这是许多测试中的最后一个。我必须以i.toString()的形式通过它将每个i转换为字符串
“i”
是一个字符串。在数字中永远找不到它。您在数组中查找的是文本字符串
“i”
,而不是它的值……除此之外,您的服务器还返回一个数字字符串数组,而不是数字数组。这是许多测试中的最后一个。我必须将其作为i.toString()进行传递要将每个i转换为字符串
[“1”]。indexOf(1)==-1
i
需要作为字符串传递,即
'+i
[“1”]。indexOf(1)==-1
i
需要作为字符串传递,即
'+i