2017-01-14 58 views
0

我正在做一個ajax調用,它返回一個數組。這回陣列由陣列中,每一個都是另一個數組:JS循環通過AJAX響應數組填充數組,如何獲取數據?

image for clarification - response in console

我試圖做一個for循環在JavaScript中,爲每個在應答爲這些陣列中創建一個元素陣列。我的代碼:

 $.ajax({ 
     url: $("base").attr('href') + 'json/handler', 
     data : data, 
     cache: false, 
     contentType: false, 
     processData: false, 
     type: 'POST', 
     success: function(data){ 
      console.log(data); 
      for(var entry in data) { 

      $('#testdiv').prepend("<span class='test' data-unixtime='" + entry[2] + "'>" + entry[0] + "</span><br>"); 

      } 

entry[0]entry[2]只返回一個(隨機)數。我也不能通過使用entry[1][tablename]來達到嵌套數組中的數據。

我嘗試了多種方法來完成循環,並從中得到了幾個不同的(隨機數)數字,但是沒有任何數據甚至接近我需要的值。

+2

嘗試記錄什麼'entry'是,它不是你所想的那樣。也不要在數組中使用'for in'。 – charlietfl

+0

我習慣了Twig(PHP),所以我犯了這個錯誤!這種方式似乎工作:'var arrayLength = data.length; for(var i = 0; i

+0

您是否嘗試添加dataType作爲ajax函數的屬性? dataType:'json' 記得要在你想訪問的鍵之間加上「」tablename「' –

回答

1

你可以使用for循環,但是對於使用更清晰的foreach,你會更好。至於嵌套對象(注意:object,not數組),你可以通過調用它的屬性來訪問它,而不是試圖訪問索引。這是一個應該幫助你的js bin! ;)你應該只能夠在data.forEach部分拖放到你的Ajax響應函數(成功:函數(數據){})

https://jsbin.com/dorayeriku/1/edit?html,js,output

var data = [ 
    ['10:00', {tablename: 'table1', tableseats: 2}, '1234567'], 
    ['11:00', {tablename: 'table2', tableseats: 2}, '1234568'], 
    ['12:00', {tablename: 'table3', tableseats: 2}, '1234569'], 
      ] 


    data.forEach((entry) => { 
     $('#testdiv').prepend("<span class='test' data-unixtime='" + entry[2] + "'>time: " + entry[0] + "<br/> tablename: " + entry[1].tablename +"<br/>table seats:" + entry[1].tableseats + "<br/><br/></span><br>"); 
    }) 

任何疑問或需要其他幫助,只是在我身上發射它們:)

+0

非常感謝你! –

+0

爲了記錄,這裏有三種方式,包括你的不工作,你應該能夠找出原因,但如果你想要更多的細節,我很樂意。 https://jsbin.com/nimuluqoho/edit?js,output –

+0

謝謝,這真的很有用! –