2013-12-07 70 views
0

我有一個JSON數據,我想刪除數組中的所有項目,我已經嘗試刪除Products.length = 0,但沒有任何工作。我可以添加一個新項目,修改和刪除一個特定的項目,但無法刪除所有項目。使用jquery從JSON刪除數組中的所有項目

JSON數據

{ 
    "Products":[ 
     { 
     "productID":"75", 
     "productName":"Mango Juice", 
     "productQuantity":3, 
     "seller_1":"30.00", 
     "seller_2":"40.00", 
     "seller_3":"34.50" 
     }, 
     { 
     "productID":"25", 
     "productName":"Apple Juice", 
     "productQuantity":1, 
     "seller_1":"70.00", 
     "seller_2":"74.00", 
     "seller_3":"84.50" 
     }, 
     { 
     "productID":"10", 
     "productName":"Orange Juice", 
     "productQuantity":1, 
     "seller_1":"10.00", 
     "seller_2":"20.00", 
     "seller_3":"12.50" 
     } 
    ] 
} 

刪除所有項目後,我應該得到這個作爲最終

{"Products": []} 

這裏是Jquery的過程

$(document).ready(function() { 
    $.getJSON("data.json", function(data) { 
      data.Products = []; 
      $.ajax({ 
      type: "POST", 
      url: "json.php", 
      dataType: 'json', 
      data: { json: data } 
     }); 
    }); 
}); 

PHP進程

if(isset($_POST['json'])) { 
    $fp = fopen('data.json', 'w+'); 
    fwrite($fp, json_encode($_POST['json'])); 
    fclose($fp); 
} 

console.log(data);表明代碼已經在JavaScript端得到很好的執行,但它並沒有通過PHP

更新JSON
+0

如果你有JSON,你有一個字符串 - 所以下定決心:你有一個JSON * STRING *或者你有一個對象與哈希鍵「產品」下面的數組?顯然,更改(JSON)字符串需要與使用對象/數組結構完全不同的方法。如果你有一個數組而不是一個字符串 - 見這裏:http://stackoverflow.com/questions/500606/javascript-array-delete-elements –

+0

其實 - 看到這個問題的最底部的答案,1186 upvotes,5時間超過接受的答案:http://stackoverflow.com/questions/1232040/how-to-empty-an-array-in-javascript –

回答

2

如果你有這樣的:

var data = { 
    "Products":[ 
     { 
     "productID":"75", 
     "productName":"Mango Juice", 
     "productQuantity":3, 
     "seller_1":"30.00", 
     "seller_2":"40.00", 
     "seller_3":"34.50" 
     }, 
     { 
     "productID":"25", 
     "productName":"Apple Juice", 
     "productQuantity":1, 
     "seller_1":"70.00", 
     "seller_2":"74.00", 
     "seller_3":"84.50" 
     }, 
     { 
     "productID":"10", 
     "productName":"Orange Juice", 
     "productQuantity":1, 
     "seller_1":"10.00", 
     "seller_2":"20.00", 
     "seller_3":"12.50" 
     } 
    ] 
} 

然後,你可以這樣做:

data.Products = []; 

這將只是將data.Products設置爲一個新創建的空數組。

如果您有任何理由要保持地方相同的數組(您想現在是指向空數組如引用),你也可以這樣做:

data.Products.length = 0; 

注:也有很多其他的方法也包括拼接所有元素,彈出所有元素等等。通過刪除它的項目來修改原始數組,而不是分配新的空數組將修改數組,任何外部引用也可能指向(根據具體情況你可能會也可能不會)。


僅供參考,JSON是一種文本格式。你在這裏是一個javascript對象。兩者不一樣。

+0

這就是我會做的,但我只是發現這一點,並有設置的壓倒性的支持'array.length = 0'(** 1000 + upvotes答案在底部!!! **):http://stackoverflow.com/questions/1232040/how-to-empty-an-array-in- javascript Hmmm .... –

+0

@Mörre - 沒有人需要將引用保持原始數組,這是設置'.length'的主要優點的討論。 – jfriend00

+0

它在我看來不像是一種選擇,應該只在特殊情況下選擇 - 此外,如果您始終這樣做,則無需檢查是否有其他參考,您必須保留請記住,如果你以其他方式做到這一點。因此,從現在開始我們知道我們是人類** I **會將設置長度設置爲0,因爲除了檢查我的所有數組是否可以有任何其他參考指向它們之外,我需要我的有限腦力來處理其他事情。總是在你需要考慮的地方工作的選項。 –

0

您可以嘗試使用拼接功能

var arr =[1,2,3,4]; 
arr.splice(0,arr.length);