2014-09-01 86 views
0

我有一個客戶自定義的eCommerce構建,其中包含需要發送到服務器進行哈希的表單才能發佈的輸入。通過AJAX POST POST Javascript對象的JSON構造函數

基本設置包含兩個選擇字段,一個用於風味名,另一個用於其相應數量。用戶可以添加其他味道,它添加了另一套味道名稱和數量選擇。

由於風味的數量(及其數量)是動態的,我需要在表單通過AJAX發佈之前對這些值進行散列。

如何創建的JSON例如構造函數下面,這樣我可以通過JSON.stringify()

基本JSON格式發佈的用戶價值,以我的PHP腳本我(覺得)我後:

var flavorSelection { 
    flavor1 : ["Bacon", "1"], 
    flavor2 : ["Cheezy", "2"], 
    flavor3 : ["Cheezy", "1"] 
} 

樣品選擇字段

<div> 
<select name="flavors"> 
    <option name="bacon" value="bacon">Bacon</option> 
    <option name="cheezy" value="cheezy">Cheezy</option> 
</select> 
<select name="qty"> 
    <option name="1" value="1">1</option> 
    <option name="2" value="2">2</option> 
</select> 
</div> 
+0

如果你顯示你的實際AJAX代碼,你可能會得到更多有用的幫助 – RiggsFolly 2014-09-01 16:49:08

+0

什麼是哈希?你的意思是編碼json嗎? – meda 2014-09-01 16:59:33

+0

@RiggsFolly,我在PHP中格式化數據,並插入響應沒有太多大驚小怪 - 我只是無法正確構建JSON。 – MarketHubb 2014-09-01 17:05:52

回答

-1

你可以這樣做:

<div> 
<select name="flavors[]"> 
    <option name="bacon" value="bacon">Bacon</option> 
    <option name="cheezy" value="cheezy">Cheezy</option> 
</select> 
<select name="qty[]"> 
    <option name="1" value="1">1</option> 
    <option name="2" value="2">2</option> 
</select> 
</div> 

在PHP中,當您在表單輸入名稱後面使用[]時,$_POST["field_name"]將收到一個數組。

那麼如果你有三種不同的口味,你的$_POST["flavors"]將收到一個值「味道一」,「味道二」,「味道三」的數組。

而你的$_POST["qty"]將以相同的順序收到一個數組,其中包含相應數量的口味。

然後你使用jQuery.serialize()來格式化你的表單數據使用jQuery.ajax()提交。

+0

這不是老東西,它解決了問題! 使用這種格式,他可以在表單中使用jQuery.serialize()並將其作爲數據提交。 – 2014-09-01 16:53:04

0

您需要調整您的HTML標記發送陣列到服務器

<div> 
<select name="flavors[]"> 
    <option name="bacon" value="bacon">Bacon</option> 
    <option name="cheezy" value="cheezy">Cheezy</option> 
</select> 
<select name="quantities[]"> 
    <option name="1" value="1">1</option> 
    <option name="2" value="2">2</option> 
</select> 
</div> 

不知道這是否是最好的方式,但你需要依靠數組索引配對您的數據。

,你可以很容易地循環,建立自己的JSON方式如下:

$flavors = $_POST['flavors']; 
$quantities = $_POST['quantities']; 

$json = array(); 

for($i = 1; $i <= count($flavors) $i++){ 
    $json[] = array('flavor'.$i => array( 
         flavors[$i], quantities[$i] 
        )); 
} 

echo json_encode($json); 

這會給你想要的JSON,我不知道,雖然散列。