我不确定这是否可行,因为javascript是客户端而php是服务器端,但我所拥有的是一系列javascript函数,它们为表单中的订单提供实时总计。为了澄清这一点,当用户选择表单中的项目时,它会给出总计。在提交表单时,php正在将订单提交到数据库。我需要实现的是一种将订单的总数(由javascript创建)提交到数据库的方法(通过php obv)。创建总计的javascript函数是:
function calculateTotal(){
var Price = getDropPrice() + getverifyPrice() + getmiscPrice();
var divobj = document.getElementById('totalPrice');
divobj.style.display='block';
divobj.innerHTML = "$"+Price;
}
生成它的html非常简单:
<div id="totalPrice"></div>
如果你需要我发布另一个functions(getDropPrice, getverifyPrice, getmiscPrice)
让我知道,但基本上是drop是下拉,验证和misc是单选按钮,我只是将他们的总数加在一起以获得订单总数以上功能。我对SO和谷歌的搜索只向我展示了如何将PHP变量变成javascript,而不是相反,所以我当然希望这可以做到。谢谢!
答案 0 :(得分:2)
将您的总数放在隐藏的输入字段中。然后,您的PHP脚本将能够在提交表单后执行读取并执行您想要的任何操作。
<input type="hidden" name="hiddenInput" />
然后你就像$_POST['hiddenInput']
一样照常;如果您有更多数据要以这种方式发回,您可以添加更多输入,或者坚持使用一个但将所有数据打包成JSON并以此方式发送。收到后,无论发送了多少数据,您都可以在该字段上json_decode()
获得所有数据。
但是,我不建议依赖用户方提供的数据,而是发回选择的产品并再次计算总数,否则您可能会发现自己每天以1美元的价格销售昂贵的商品:)< / p>
答案 1 :(得分:1)
你需要的是来自jQuery的$ .ajax。这将发送POST请求而不重新加载页面。
让我们说你的按钮被称为myButton然后你可以调用函数的onClick()事件
$.ajax({
type: "POST",
url: "some.php",
data: { name: "John", location: "Boston" }
}).success(function( msg ) {
alert( "Data Saved: " + msg );
});
在你的some.php中,你只需使用$ _POST [&#39; name&#39;]和$ _POST [&#39; location&#39;]来检索信息。
假设您有一个输入字段。您也可以通过jQuery从这样的字段中检索信息。然后,您可以通过ajax将输入字段中的信息发送到您的PHP脚本
$('#yourInputField').val();
其中yourInputField是输入字段的ID。有了这个,您可以将此信息提供给脚本。如果表单中有多个元素,则可能需要查看函数serialize()。原则上是相同的,只是将所有信息压缩为JSON字符串。
答案 2 :(得分:1)
这就是作者使用"input"
类型的"hidden"
元素的原因。使用其中一个并将元素的"value"
属性设置为您想要的总量,然后将表单发布到数据库,您可以像访问表单上的其他值一样访问隐藏值。
HTML:
<input type="hidden" id="TotalPrice_Input" />
使用Javascript:
document.getElementById("TotalPrice_Input").value = Price;
希望它有所帮助。
答案 3 :(得分:0)
将Javascript与PHP混合:
<?php
$mixit = '<script type="text/javascript">';
$mixit .= 'function calculateTotal() {';
$mixit .= 'var Price = getDropPrice() + getverifyPrice() + getmiscPrice();';
$mixit .= 'var divobj = document.getElementById("totalPrice");';
$mixit .= 'divobj.style.display="block";';
$mixit .= 'divobj.innerHTML = '.$Price.';}';
$mixit .= '</script>';
echo $mixit;
?>