使用Javascript作为php变量返回

时间:2012-11-25 19:00:42

标签: php javascript

我不确定这是否可行,因为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,而不是相反,所以我当然希望这可以做到。谢谢!

4 个答案:

答案 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;

?>