1

我不确定这是否可能,因为 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 是一个下拉,verify 和 misc 是单选按钮,我只是将它们的总数加在一起以获得上述函数中的订单总数。我在 SO 和 google 上的搜索只向我展示了如何将 php 变量导入 javascript,而不是相反,所以我当然希望可以做到这一点。谢谢!

4

4 回答 4

2

将您的总数放在隐藏的输入字段中。然后,您的 PHP 脚本将能够在提交表单后读取并执行您想要的任何操作。

<input type="hidden" name="hiddenInput" />

然后你像往常一样得到它$_POST['hiddenInput'];如果您有更多数据要以这种方式发回,您可以添加更多输入,或者坚持一个但将所有数据打包成 JSON 并以这种方式发送。收到后,您json_decode()在该字段上进行操作,并且无论发送了多少数据,都将其全部恢复。

但是,我建议依赖用户方提供的数据,而是发回选择了哪些产品并再次计算总数,否则您可能会发现自己每天以 1 美元的价格出售昂贵的商品 :)

于 2012-11-25T19:02:56.010 回答
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['name'] 和 $_POST['location'] 来检索信息。

假设您有一个输入字段。您也可以通过 jQuery 从此类字段中检索信息。然后,您可以通过 ajax 将输入字段中的信息发送到您的 php 脚本

$('#yourInputField').val();

其中 yourInputField 是输入字段的 ID。有了这个,您可以将此信息传递给脚本。如果表单中有多个元素,则可能需要查看函数 serialize()。原则上做同样的事情,只是将所有信息压缩成一个 JSON 字符串。

于 2012-11-25T19:02:49.497 回答
1

这就是为什么作者制作了"input"类型为 的元素"hidden"。使用其中一个并将"value"元素的属性设置为您想要的总量,然后将表单发布到数据库,您可以像访问表单上的其他值一样简单地访问隐藏值。

HTML:

<input type="hidden" id="TotalPrice_Input" />

Javascript:

document.getElementById("TotalPrice_Input").value = Price;

希望能帮助到你。

于 2012-11-25T19:03:58.630 回答
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;

?>
于 2012-11-25T19:13:13.577 回答