2013-07-15 27 views
1

我寫測試代碼,在php頁面上發佈數組。 PHP頁面需要將這個數組寫入文件來檢查數據。JQuery - 發佈數組並在php上寫入文件

JQuery的:

$("#Trash").click(function() { 
    $.post("tests.php", 
    {'ids[]': ArrayCheckBox}, 
     function(result){ 
      window.location = 'tests.php'; 
     } 
    ); 
    }); 

在tests.php我試圖解析:

  $s = array(); 
      foreach ($_POST as $k => $v) { 
       if (is_array($v)) { 
       if ($v=='ids[]') 
        array_push($s, $v[0]); 
       } 
      } 

      $file = $_SERVER['DOCUMENT_ROOT'] .'/test2.txt'; 
      $current = file_get_contents($file); 
      $current .= implode(', ', $s); 
      file_put_contents($file, $current); 

但這只是碼 「1」 的每一次寫。它如何修復?

+0

可以輸出$ _POST或$ v的內容嗎?當你將它保存到你的文件中後(你在foreach循環之後),你的$ s變量是什麼樣的? – mokk

+0

可能發送它爲json,而不是通過ArrayCheckBox參考? – Krab

+0

不是JQuery專家,但我建議在POSTing時在名稱中使用方括號是因爲它可以在傳遞到PHP腳本之前由PHP解釋爲數組。所以$ _POST項目的名稱將是'ids'。整個if($ v =='ids []')...對我來說看起來不對。當然你需要像if(!strcmp($ k,'ids'))或者使用不太可靠的「==」這樣的if($ k =='ids')...在你的foreach $ k中保持元素名稱/鍵和$ v的值。 –

回答

1

所以,你的JavaScript看起來非常接近。唯一讓我覺得奇怪的是你在ids []後面使用了方括號,我猜是因爲它是一個數組 - 你不需要這樣做。

$("#Trash").click(function() { 
    $.post("tests.php", 
     {'ids': ArrayCheckBox}, 
     function(result){ 
      window.location = 'tests.php'; 
     } 
    ); 
}); 

但我也有點困惑你的變量ArrayCheckBox - 那是什麼應該包含哪些內容?這是你準備發佈的一系列值嗎?或者是一個真正的Dom對象就像一個複選框?如果是這樣,在發佈之前,您需要先獲取原始數據。

繼續前進 - 您的PHP代碼讓我困惑了一下。數組('ids'=> array('1','2','3'))數組中的數據在$ _POST中啓動,它將看起來像這樣:array ,...))。

你想讓你的文件看起來像什麼?一個採取這種全陣列,並將其寫入到文件最簡單的方法是使用JSON:

<?php 
$json = json_encode($_POST); 
$file = $_SERVER['DOCUMENT_ROOT'] .'/test2.txt'; 
file_put_contents($file, $json); 
?> 

它看起來像你試圖要檢查什麼是已經存在的數據,是這樣嗎?如果是這樣,你可以做這樣的事情:

<?php 
$json = json_encode($_POST); 
$file = $_SERVER['DOCUMENT_ROOT'] .'/test2.txt'; 
$current_contents = file_get_contents($file); 
if ($current_contents == $json) { 
    echo "Data is still the same as what was already there."; 
} 
else { 
    echo "Data has changed." 
} 
?> 

讓我知道,如果你有任何問題。