我有以下带有输入元素的HTML表单:
<form id="forma" name="forma" method="post">
<div id="oblock">
<div class="dtable">
<div class="drow" id="drow1">
<div class="dcell">
<label for="aster">Aster:</label>
<input type="text" id="aster" name="aster" value="0" stock="10" price="2.99" required>
</div>
<div class="dcell">
<label for="daffodil">Daffodil:</label>
<input type="text" id="daffodil" name="daffodil" value="0" stock="12" price="1.99" required >
</div>
<div class="dcell">
<label for="rose">Rose:</label>
<input type="text" id="rose" name="rose" value="0" stock="2" price="4.99" required>
</div>
</div>
</div>
</div>
<div id="buttonDiv">
<button type="submit">Place Order</button>
</div>
</form>
我使用jQuery serialize()从表单收集数据并使用 $。post 发送到服务器端(在我的情况下为 test.php ):< / p>
$(function() {
$("button").click(function(e) {
var formData = $("form").serialize();
$.post("test.php", formData, processServerResponse);
e.preventDefault();
});
});
function processServerResponse(data) {
$("div.dcell").hide();
$("#buttonDiv").append('<div>'+data.total+'</div>');
$("#buttonDiv button").remove();
}
如果我理解正确 - 使用 var formData = $(&#34; form&#34;)。serialize(); 发送到服务器的数据将是一个看起来像的字符串像这样的东西:
"aster":"2"&"daffodil":"5"&"rose":"0"
1。如何在 PHP 中访问这些值?
2. 如果有大量输入元素,每个元素都有自己唯一的名称,我们如何迭代(并避免使用$ _POST [&#39; input_name&#39;]每个元素单独 - > $ _POST [&#39; aster&#39;],$ _POST [&#39; rose&#39;]等等......)并计算 PHP中的总和
3. 如何将计算出的金额发送回客户端(f 从PHP到jQuery /客户端)?
EDIT2:
根据我在这里收到的一些答案,我尝试了以下方式:
<?php
$sum = 0;
foreach ($_POST as $name=>$value) {
$sum += (int)$value;
}
$_POST['total'] = $sum;
echo json_encode($_POST['total']);
我的客户端代码(jQuery):
function processServerResponse(data) {
$("div.dcell").hide();
$("#buttonDiv").append('<div>'+data+'</div>');
$("#buttonDiv button").remove();
}
它有效 - 它显示总和......
答案 0 :(得分:1)
1使用$ _POST ['variable-name'];
CREATE OR REPLACE FUNCTION std_deviation(variadic inputs numeric[])
RETURNS numeric AS
$BODY$
SELECT stddev(v) FROM unnest(inputs) v
$BODY$
LANGUAGE SQL IMMUTABLE;
2迭代$ _POST数组
$asterPostVariable = $_POST['aster'];
3将其作为json数据回显
foreach ( $_POST as $key => $val )
{
// Do calculation, your value from input element is in $val
$sum += $val;
// You could also check your $key if you don't want to sum all post variables
}
修改强>
2迭代$ _POST数组
echo json_encode( ['sum' => $calculatedSum] );
答案 1 :(得分:1)
回答你的所有三个问题:
1。要访问这些值,您可以使用超全局变量。例如:
delItem
2。要遍历所有元素,请使用$_POST['element_name'];
语句。例如:
foreach
3。要将值返回给JavaScript,请将$sum = 0;
foreach($_POST as $name => $value){
$sum += strtoint($value);
}
$final = array(
sum => $sum
);
与json_encode
一起使用。另外,请确保不要echo
任何您不想返回的数据。例如:
echo
答案 2 :(得分:1)
您可以将每个花变量作为数组的索引:
<form id="forma" name="forma" method="post">
<div id="oblock">
<div class="dtable">
<div class="drow" id="drow1">
<div class="dcell">
<label for="flowers[aster]">Aster:</label>
<input type="text" id="flowers[aster]" name="flowers[aster]" value="0" stock="10" price="2.99" required>
</div>
<div class="dcell">
<label for="flowers[daffodil]">Daffodil:</label>
<input type="text" id="flowers[daffodil]" name="flowers[daffodil]" value="0" stock="12" price="1.99" required >
</div>
<div class="dcell">
<label for="flowers[rose]">Rose:</label>
<input type="text" id="flowers[rose]" name="flowers[rose]" value="0" stock="2" price="4.99" required>
</div>
</div>
</div>
</div>
<div id="buttonDiv">
<button type="submit">Place Order</button>
</div>
</form>
然后你可以迭代这个数组:
foreach($_POST['flowers'] as $flowerType => $count){
// do something
}
我会尽量避免遍历整个$_POST
数组,因为您可能希望稍后在此表单中添加更多变量(与花无关)。
将echo json_encode($result);
发送回客户端时可以使用undefined
修改强>:
如果您的帖子收到Parse.Cloud.define
响应,则应检查您的PHP错误日志,因为您的脚本可能会在回显任何内容之前失败或退出。
答案 3 :(得分:-1)
serialize方法只接受表单元素并将它们以字符串形式放置。 &#34; VARNAME = VAL&安培; VAR2 = val2的&#34;