2012-12-12 35 views
4

背景 - 我有一個包含一堆按鈕(認爲POS系統)的網頁。我希望用戶能夠編輯按鈕的名稱(用於按特定順序放置)以及包含兩個部分(即項目和成本)的按鈕文本。目前我通過將PHP頁面(編輯完成的地方)的數據傳遞給另一個PHP頁面(我將其寫回到數據庫)來工作,但我想使用更多的AJAX方法並將它傳遞給js功能在保存編輯時更新。由於按鈕的數量非常之多,我不知道要讀入腳本的按鈕的確切數量。目前,我有這樣的事情......獲取可變大小的形式到JavaScript和PHP(AJAX)

echo "<td><input type='text' name='btn[]' size='5' value='" . $row['button'] . "'/></td>"; 
echo "<td><input type='text' name='itm[]' size='5' value='" . $row['item'] . "'/></td>"; 
echo "<td><input type='text' name='prc[]' size='5' value='" . $row['price'] . "'/></td>"; 

被髮送到一個PHP頁面,在這裏我有...

$buttonArray = $_POST['btn']; 
$itemArray = $_POST['itm']; 
$priceArray = $_POST['prc']; 

$numberofItems = count($itemArray); 

for ($i=0; $i<$numberofItems; $i++) 
{ 
$sql = "UPDATE concessions SET button = '".$buttonArray[$i]."', item = '".$itemArray[$i]."', price = '".$priceArray[$i]."'"; 
mysql_query($sql); 
} 

我想要做的JS看document.form類似的東西。元素,但無法弄清楚如何發送(像和數組)我可以使用for循環來循環。任何建議都是值得歡迎的。

+0

你使用jQuery嗎?你需要將你的表單轉換爲數組嗎?你需要什麼? –

+0

如果正在使用JavaScript(未jQuery的),則可以使用一個循環通過表單迭代: '爲(I = 0; I

+0

沒有使用jQuery這個頁面上,但它是不超出範圍。我是AJAX,jQuery,JSON等的新手,並且試圖不讓新東西咬人太多。 使用jQuery會很容易,如果是這樣會是什麼樣子? –

回答

1

有一個很簡單的方法來做到這一點:使用這個簡單的JavaScript函數(請確保您有最新的jQuery加載)

$.fn.serializeObject = function() 
{ 
    var o = {}; 
    var a = this.serializeArray(); 
    $.each(a, function() { 
     if (o[this.name] !== undefined) { 
      if (!o[this.name].push) { 
       o[this.name] = [o[this.name]]; 
      } 
      o[this.name].push(this.value || ''); 
     } else { 
      o[this.name] = this.value || ''; 
     } 
    }); 
    return o; 
}; 

此功能將序列按照正確的順序你的表單元素和將輸出一個JavaScript對象。 您需要使用AJAX使用它像這樣爲了解析您的值:

var objects = $("#ID_OF_YOUR_FORM").serializeObject(); 

$.ajax({ 
    url: "your_ajax_file_location.php", 
    type: "POST", 
    data: ({ 
     objects:objects, 
     otherdata:otherdata 
    }), 
    success: function(msg){ 
     /* do whatever here */ 
    } 
}); 

阿賈克斯將做它的魔力,並自動變換一個PHP數組對象,並張貼到PHP ...試試這個:

echo "<pre>".$_POST['objects']."</pre>"; 

PHP的數組應該是這樣的:

{ 
    btn= array(
       "your btn1 info", 
       "your btn2 info", 
       "your btn3 info" 
       ); 

    itm= array(
       "your itm1 info", 
       "your itm2 info", 
       "your itm3 info" 
       ); 

    prc= array(
       "your prc1 info", 
       "your prc2 info", 
       "your prc3 info" 
       ); 

} 

從這個類型的數組,這是很容易在PHP操作,以更新數據庫