2014-09-01 85 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,我不知道,虽然散列。