2014-02-23 49 views
0

Hy給所有人, 我有一些代碼沒有引發錯誤但是確實無法正常工作。 我有一個Ajax調用是這樣的:在JSON數組中找不到項目

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" 
}); 

這從數據庫獲取的數字陣列(僅約1和43之間的所有號碼)。例如:[「0」,「27」,「31」,「30」,「32」,「33」,「8」,「29」,「19」,「42」]。 問題是,我無法評估這個數組對於1和43之間的所有數字(for循環),因爲如果for循環內部從不計算真實值。我已經嘗試了兩個$ .inArray和indexOf沒有任何運氣。 我在做什麼錯? 在此先感謝 Lelio

+2

' 「I」'是一個字符串。它將永遠不會在數字中找到。 –

+0

您正在尋找數組中的字符串「i」,而不是它的值......除此之外,您的服務器將返回一個*數字字符串*的數組,而不是*數字*的數組。 – DCoder

+0

這是許多測試的最後一個。我必須將它作爲i.toString()傳遞給每個字符串 –

回答

3

您完全可以通過利用,在選擇跳過循環。

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

此外,它可能是值得注意的是,在開始IDA-Z以外的字符可能會出現意想不到的結果,即使它是在HTML5規範允許的。您可能希望在數字部分前加一個字母。

0

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

你的「我」是,如果你嘗試一下這個,而不是雙引號和不被視爲一個變量之間: if(fun.indexOf(''+i)>-1){

+1

'[「1」]。indexOf(1)=== -1','i'需要作爲_String_傳遞,即' ''+ i' –

+0

感謝您的澄清 – Brice

0

所有你需要做的是:

fun.each(function (i) { 
    $('#' + i).attr('checked' , true); 
}); 
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" 
}); 

我已經在你的,如果條件改變了「我」來i.toString()

1

變化fun.indexOf("i")fun.indexOf(''+i)