通过AJAX POST Javascript对象的JSON构造函数

时间:2014-09-01 16:40:32

标签: javascript php ajax json

我有一个客户端的自定义电子商务版本,其中包含需要在表单发布之前发送到服务器进行散列的输入。

基本设置包含两个选择字段,一个用于风味名称,另一个用于相应的数量。用户可以添加额外风味,这会添加另一组风味名称和数量选择。

由于flavor(及其数量)的数量是动态的,我需要在通过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>

2 个答案:

答案 0 :(得分: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,但我不知道哈希。

答案 1 :(得分:-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"]将收到一个数组。

然后,如果你有3种不同的口味,你的$_POST["flavors"]会收到一个数组,其中包含“味道一”,“味二”,“味三”。

您的$_POST["qty"]将按相同的顺序收到一个包含各自口味数量的数组。

然后使用jQuery.serialize()将表单数据格式化为使用jQuery.ajax()提交。