簡體   English   中英

通過$ .post發送多維數組

[英]Send multidimensional Array via $.post

我有一個多維數組,我通過$ .each填充

$('.gBook').click(function(){
        var values = [];
        var valueToPush = { }; // or "var valueToPush = new Object();" which is the same
        var i = 0;
        $('td[data-check="true"]').each(function(){
                valueToPush["price"] = $(this).attr("data-price");
                valueToPush["id"] = $(this).attr("data-id");
                values.push(valueToPush);
                i++;
        });

        var arrayToSend = {values};

        $.post( '<?php echo PATH;?>ajax/updateRoom.php',values, function(data){
                if(data != "ERROR"){
                    $('#all-content').html(data).css("overflow-y","auto");
                }else{
                    alert("ERROR");
                }
        });
    });

但是,所有POST變量的結果都是相同的:

Array (
  [values] => Array (
   [0] => Array ( [price] => 15 [id] => 3380 )
   [1] => Array ( [price] => 15 [id] => 3380 )
   [2] => Array ( [price] => 15 [id] => 3380 )
  ) 
) 

我的錯誤在哪里? 似乎“推”每次都會覆蓋?

這行:

var valueToPush = { };

在您的循環之外。

那么你:

  1. 創建一個對象
  2. valueToPush引用它
  3. 將價值放在其中
  4. 將對它的引用復制到數組上
  5. 轉到3

您只有一個對象,數組中只有多個對象。

每次循環時都需要創建一個新對象。

$('td[data-check="true"]').each(function(){
    var valueToPush = {};
    valueToPush["price"] = $(this).attr("data-price");

您的每個循環應如下所示:

$('td[data-check="true"]').each(function(){
     values.push({
        price: $(this).attr("data-price"),
        id: $(this).attr("data-id")
     });
 });

您需要在每次迭代中插入一個新對象。 當前,您正在將對單個對象的引用插入到數組中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM