2013-08-19 38 views
2

我與jquery AJAX加工後陣列覆蓋相同的值& Ajax響應是多維的JSON數組,我assinging的JSON值coordinates陣列&然後assinging coordinates陣列以新的JSON coord_set,後將所有值賦予coord_set,它將最後一個數組值取爲全部,使用Javascript:assinging到JSON對象

對於例如 JSON結果包含assinging新的JSON後,下面的值

obj[0]={125, 343, 456, 453}, 
obj[1]={345, 657, 234, 787}, 
obj[2]={980, 677, 657, 568} 

值是:

coord_set[0] = { 
        fillColor : 'rgba(255, 234, 111 ,0.5)', 
        data : [980, 677, 657, 568] 
       } 
coord_set[1] = { 
        fillColor : 'rgba(255, 234, 111 ,0.5)', 
        data : [980, 677, 657, 568] 
       } 
coord_set[2] = { 
        fillColor : 'rgba(255, 234, 111 ,0.5)', 
        data : [980, 677, 657, 568] 
       } 

這是我的代碼:

var obj = JSON.parse(data); 
    for(var j=0;j<obj.length;j++) 
    { 
     for (var i=0;i<obj[j].length;i++) 
     { 
        coordinates[i] = obj[j][i].how_many; 
     } 

     coord_set[j] = { fillColor : 'rgba(255, 234, 111 ,0.5)', data : coordinates }; 
    } 
    alert(JSON.stringify(coord_set)); 

請告訴我,如果我做我的代碼中有任何錯誤?

+0

你得到一個錯誤?你沒有提到你有什麼問題。 – dwerner

+0

沒有得到任何錯誤,問題是最後一個數組即ie。 obj [2]值被賦值給所有coord_set JSON數組 –

回答

2

的問題是,您使用的是單coordinates陣列。您繼續設置並重新設置該數組中的值,並且您繼續將相同數組存儲在coord_set的新元素中。爲了解決這個問題,你只需要使用一個新的coordinates陣列上每次通過外循環:

for(var j=0;j<obj.length;j++) 
    { 
     coordinates = [];  // <----- add this 
     for (var i=0;i<obj[j].length;i++) 
+0

這很簡單,但很好,謝謝你,ruakh,它工作。 –

+0

不要忘記使它成爲一個局部變量,否則,你可能會有其他驚喜... – fabien

+0

非常感謝ruakh!你的修復讓我的一天......在今天整整一天都陷入了困境...... –

0

我會假設JSON.parse實際工作......但既然你說你正在使用jQuery,我會用http://api.jquery.com/jQuery.parseJSON/親自...

幾件事情有關代碼:

  • 你永遠不會爲座標創建一個新的對象,默認情況下,它是JS中的一個全局變量。您必須輸入:

    var coordinates = []; // before the for (var i = 0; ... 
    
  • 此屬性「how_many」從哪裏來?我沒有看到它在你的代碼的第一個塊......在你我循環中的代碼應該是:

    coordinates[i] = obj[j][i]; 
    
  • 最後,你爲什麼需要這個瞬態對象的副本呢?這應該只是做:

    coord_set[j] = { fillColor : 'rgba(255, 234, 111 ,0.5)', data : obj[j] }; 
    // if you change your result set to give a code like that: 
    obj[0]= [ 125, 343, 456, 453 ] // and not: obj[0]={125, 343, 456, 453} 
    
+0

從OP的發佈輸出中,我假設'how_many'的東西實際上是好的。可能複製對象的原因是JSON將單個值存儲在包含名爲'how_many'的字段的對象中,而OP只是希望將這些值直接存儲在'data'中。 – ruakh