2012-12-12 65 views
7

Tôi đã cố gắng để có được những phương pháp push() trên một vòng lặp để xây dựng một cấu trúc như sau:Đẩy mảng vào mảng trong Javascript (jQuery)

var locations2 = [ 
    ['User', position.coords.latitude, position.coords.longitude, 1], 
    ['Bondi Beach', -33.890542, 151.274856, 2], 
    ['Coogee Beach', -33.923036, 151.259052, 3], 
    ['Cronulla Beach', -34.028249, 151.157507, 4], 
    ['Manly Beach', -33.80010128657071, 151.28747820854187, 5], 
    ['Maroubra Beach', -33.950198, 151.259302, 6] 
]; 

Đây là mã của tôi:

var locations = []; 

$.ajax({ 
    type: "POST", 
    url: "/ajax/map.php", 
    data: "name=test", 
    dataType: "json", 
    cache: false, 
    success: function(data){ 
     $.each(data.points, function(i,item){ 
      array_push = ["test", parseFloat(item.origem_lat), parseFloat(item.origem_lng), i]; 
      locations.push(array_push); 
     });    
    } 
}); 

Tuy nhiên, bảng điều khiển Javascript.log cho các vị trí hiển thị một mảng trống.

Tôi đã cố gắng sử dụng push() theo nhiều cách khác nhau, nhưng tôi không thể có cùng cấu trúc với vị trí2. Vấn đề lớn nhất ở đây là tôi không biết có bao nhiêu mảng sẽ nằm bên trong mảng địa điểm trước vòng lặp, vì vậy tôi không thể khởi tạo nó trước.

Mọi suy nghĩ?

+1

Cú pháp của bạn có vẻ đúng - bạn có chắc 'data.points' chứa mảng bạn đang mong đợi không? – McGarnagle

+1

Thêm một cuộc gọi lại lỗi vào cuộc gọi ajax của bạn. Nó có thể được ném một lỗi nhưng bạn có thể không biết với mã này. –

+0

Bạn có thể thực hiện kết xuất nhanh nội dung mảng của mình với cảnh báo (JSON.stringify (x)) trong đó x là mảng được đề cập. – RonaldBarzell

Trả lời

4

Tôi đã tìm ra vấn đề là gì. Nó không liên quan gì đến chính phương thức push(). Rõ ràng các cuộc gọi ajax không được thực hiện theo thứ tự tuần tự (đó là lý do nó không đồng bộ). Tôi đã thêm không đồng bộ: false trong tùy chọn cuộc gọi ajax và giờ đây mọi thứ hoạt động hoàn hảo.

Cảm ơn mọi người vì mục nhập.

+4

'không đồng bộ: false' đánh bại toàn bộ mục đích của việc sử dụng ** JavaScript và XML không đồng bộ **. Bạn sẽ gặp phải các vấn đề như treo trang, vì yêu cầu của bạn hiện đang bị chặn. Có thể xem xét ** Đối tượng bị trì hoãn ** http://api.jquery.com/category/deferred-object/ – Aesthete

+0

+1 để đề cập đến trì hoãn. Điều đáng nói đến là có một chút đường cong học tập, nhưng chúng không quá tệ và rất phù hợp với những tình huống như thế này. – lbstr

Các vấn đề liên quan