2015-05-05 72 views
0

我需要將數組拆分爲應該遵循模式的JSON數組。在JSON中拆分Javascript值

{{"url":url, "north":True "side":True}, {"url":url, "north":False, "side":True}} 

我用這段代碼得到了url參數。正如你可以看到here,這個代碼顯示3個複選框,你可以在這裏選擇圖片是北側,側面還是如果你想選擇它。

if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
    xmlDoc = xmlHttp.responseXML; 
    pictureTemp = [document.getElementById("imgfilename")]; 

    $('.login-form').append('<button onclick="sendAuswahl()">Send</button><br>'); 
    for (var i = 0; i < xmlDoc.getElementsByTagName("imgfilename").length; i++) { 
     pictureTemp[i] = xmlDoc.getElementsByTagName("imgfilename")[i].childNodes[0].nodeValue; 
     $('.login-form').append('<input type="checkbox" name="north" value="North"><input type="checkbox" name="orientation" value="Side"><input type="checkbox" name="url" value='+ pictureTemp[i]+'><img src='+ pictureTemp[i]+' width="50%"></br>'); 
    }; 
} 

要獲得所有勾選複選框,我用這個代碼:

var arrayUrl = $("input[name='url']:checked").map(function(){ 
     return this.value; 
}).get() 

var arrayNorth = $("input[name='north']:checked").map(function(){ 
     return "True"; 
}).get() 

var arrayOrientation = $("input[name='orientation']:checked").map(function(){ 
     return "True"; 
}).get() 

要選擇轉換爲JavaScript對象,並獲得我上述的模式,我用這個:

var picture = { 
     "url" : arrayUrl, 
     "North" : arrayNorth, 
     "Side" : arrayOrientation 
}; 

但是當我提醒所選圖像的值,我得到這個:

{"url":http://www.example.com, "north":True "side":True} 

當我選擇2個圖像我得到這個:

{"url":http://www.example.com, http://www.example2.com, "north":True "side":False} 

取而代之的是:

{{"url":http://www.example.com, "north":True "side":False}, {"url":http://www.example2.com, "north":False, "side":True}} 

所以我的問題是現在:我怎樣才能駕輕就熟我已經圖案的值如上所述?

回答

0
var picture = []; 
$.each(arrayUrl, function(index,val) { 
    val = { 
     "url" : val, 
     "North" : arrayNorth[index], 
     "Side" : arrayOrientation[index] 
    }; 
    picture.push(val); 
}); 
+0

這並沒有爲我工作:( – EntityBean

+0

更新我的回答 – madalinivascu

+0

我得到一個語法錯誤:意外的EOF上'VAL =「{' – EntityBean

0
var picture = []; 
$(arrayUrl).each(function(index) { 
    picture.push({ 
     "url": arrayUrl[index], 
     "North": arrayNorth[index], 
     "Side": arrayOrientation[index] 
    }); 
}); 
+0

謝謝!它幾乎可以工作,但是當第一張圖片沒有檢查過邊框而第二張圖片時,我得到這個: '[{「url」:http://www.example.com,「north」:False「side 「:True},{」url「:http://www.example2.com,」north「:False}]' – EntityBean

+0

爲此,您需要對arrayUrl,arrayNorth和arrayOrientation JSON數組進行更改。您必須對arrayNorth和arrayOrientation進行更改,因爲它包含所有選定的和未選定的值。 –

+0

所以我需要得到所有狀態,如果他們檢查或不是從arrayNorth和arrayOrientation,而不是隻有選中的? – EntityBean