簡體   English   中英

通過AJAX的POST JavaScript對象的JSON構造函數

[英]JSON constructor to POST Javascript object via AJAX

我有一個用於客戶端的自定義電子商務構建,其中包含需要在表單可以發布之前將輸入發送到服務器進行哈希處理的輸入。

基本設置包含兩個選擇字段,一個用於風味名稱 ,另一個用於其對應的數量 用戶可以添加其他風味劑 ,從而添加另一組風味劑名稱和數量選擇。

由於風味的數量(及其數量)是動態的,因此我需要在通過AJAX發布表單之前對這些值進行哈希處理。

如何為下面的JSON示例創建構造函數,以便可以通過JSON.stringify()將用戶值發布到我的PHP腳本中

我遵循的基本JSON格式(認為):

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>

您需要調整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,但是我不了解哈希。

您可以這樣做:

<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"]將收到一個數組。

那么,如果您有3種不同的口味,您的$_POST["flavors"]將收到一個值分別為“ flavor one”,“ flavor 2”,“ flavor 3”的數組。

並且您的$_POST["qty"]將以相同的順序接收包含各種風味的數組。

然后,您使用jQuery.serialize()格式化表單數據以使用jQuery.ajax()提交。

暫無
暫無

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

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