我在使用提交按钮将JS函数中的变量传递给另一个PHP文件时遇到问题。 我有一个预订表格,它使用JS计算总金额,我想将此总额发送到另一个名为“payment.php”的页面,我使用以下代码,但当重定向到payment.php时,购物车上没有任何更新 我希望在用户选择完东西后完成这项工作,然后按下结帐按钮,此按钮应该发送,但不能正常工作。 需要帮助
这是JS代码:
function payment(){
var totalPrice = calTotal();
document.getElementById("total").value= totalPrice;
window.location.href = "payment.php?total=" + totalPrice;
}
calTotal()是另一个正在进行计算的函数,它工作得很好。
以下是我收到的PHP页面上的代码:
<?php
$total = $_GET['total'];
echo $total;
?>
我实际上正在尝试创建一个学校表单,只有一个表单,它在php页面上,用户选择了checkbbox,为此我使用了JS,因为用户检查它使用calTotal()加总总数在客户端,并使用.innerHTML函数显示它。我想要发生的是,我希望将这个变量发送到另一个php页面,比如payment.php。我希望这个变量在我的支付页面上也显示出来,但是它没有获取变量,我尝试了一些我认识的方法,并尝试了@cocco给出的建议,但都是徒劳的......需要帮助。
答案 0 :(得分:1)
工作代码:
JS
YOURPAYMENTFORM.onsubmit=function(e){
this.total.value=calTotal();
this.submit();
return false
}
// if you have only one form you can access it by document.forms[0]
// and so have document.forms[0].onsubmit=function(e){..
PHP
<?php
echo $_POST['total'];
?>
出了什么问题:
您正尝试post
(提交)到某个页面,同时尝试使用get
(window.location)访问另一个页面。
为什么?
当你在表单中有一个提交按钮时,它会尝试将整个表单发送到表单元素中的指定站点,但你需要先计算总价格。
即使您停止(返回false),用户也可以单击“输入”并执行相同操作。
这就是为什么我将函数(付款)直接添加到表单元素。
------------------------问题1
如果您的表单中有document.getElementById("total").value= totalPrice;
您的付款页面为payment.php
,您可以在收到的PHP
$_POST['total']
<?php
$total = $_POST['total'];
echo $total;
?>
但在此之前,您需要使用其他按钮计算总金额。
------------------------问题2
通过在付款表单元素上添加onsubmit,您可以完全控制它
e.preventDefault()
或return false
您可以停止发送信息
并转到"payment.php?total=" + totalPrice;
页面。
YOURPAYMENTFORM.onsubmit=function(e){
e.preventDefault();
var totalPrice = calTotal();
document.getElementById("total").value= totalPrice;
window.location.href = "payment.php?total=" + totalPrice;
return false
}
但在这种情况下,您不会发送任何帖子变量。
答案 1 :(得分:0)
如果payment
是用于提交表单的事件处理程序,那么您可能需要在Event对象上调用preventDefault()
,以防止浏览器提交表单并基本上覆盖重定向。或者,你可以在提交计算总数的表单中有一个隐藏字段,并在提交时设置它,并且它将与表单中的任何其他内容一起发布。
但是,作为参考,从渐进增强的角度来看,其中任何一个都是相当丑陋的。你基本上要求人们已经启用了JS,以便让东西看起来不会破碎。这个东西在服务器端更正确处理。 (特别是如果你将这个值用于任何重要的事情!你基本上是让客户决定你的东西花了多少钱。不要相信它;在服务器上做你自己的计算。)