传递给PHP的JavaScript变量

时间:2013-10-04 12:37:54

标签: javascript php

我正在处理一个表单,该表单会累计所选的总数(通过复选框)。在我的JavaScript文件build.js中,总计被添加到一起。在我的PHP页面上,代码获取在前一个表单/ HTML页面上选择的项目,并将它们传递给PHP页面上显示的内容。我希望能够在表单页面上获取通过JavaScript添加的总数,然后将其全部列在所选的所有选项下面。

我对PHP和JavaScript的了解非常简陋。这是我用这两种语言创建的第一个真实形式。我一直倾向于这个网站和互联网,并且无法获得我发现的任何选项。我想我到目前为止已经很幸运了,所以如果我的代码不是很干净,我很抱歉!

任何帮助都会令人惊叹,请尽可能具体。这是我的代码:

添加总计的JavaScript:

    $(document).ready(function() { 
        $("input[type=checkbox]:checked").attr("checked", false);
    function recalculate() {        
    var sum = 0;
    $("input[type=checkbox]:checked").each(function() {
        sum += parseInt($(this).attr("rel"));
    });
    $("#output").html(sum);
    }
    $("input[type=checkbox]").change(function() {
    recalculate();
    });
    });

在表单上写的代码显示总数:

<span id="output" class="total"></span><BR><BR>

PHP页面上编写的代码:

<b>Estimate:</b>
<?php
  $aTruck = $_POST['formSelected'];
  if(empty($aTruck))
  {
    echo("You didn't select a truck.<BR><BR>");
  }
  else
  {
    $N = count($aTruck);
    echo("<h3>Truck Type: ");
  for($i=0; $i < $N; $i++)
    {
    echo($aTruck[$i] . " ");
    }}
  $aAddons = $_POST['formAddons'];
  if(empty($aAddons))
    { 
    echo("You didn't select any options."); 
    }
  else
  foreach ($aAddons as $v) 
    {
    echo "<h3> $v </h3>";
    }
?>

如果我没有弄错的话,我目前无法通过总数的原因是因为我在这里读到的东西:PHP在服务器上运行,而JavaScript在用户端运行。因此我的选择是在表单中发送总数(可能作为隐藏变量,我无法弄清楚),在Ajax中传递它(我不知道我所使用的服务器是否能够 - 可能是这样,它都是使用错误!),或者使用XMLHttpRequest。我已经尝试了任何我能找到的任何东西,并且没有列出正确的变量,我把它放在错误的位置,或者它只是完全错误。

正如我所提到的,我已经在论坛上倾注了与此相关的所有内容,而我发现的任何内容都不足以让我有一点点了解。我尝试过的其他事情:Pass a javascript variable value into input type hidden valuePass Javascript Variable to PHP POST以及使用XMLHttpRequest,使用Ajax,将其作为隐藏变量传递(我倾向于但不认为我正在实现正确的)还有更多 - 这几乎就是我昨天上班时所做的一切,所以我不是在想我的问题多余 - 我无法弄清楚我哪里出错了。

2 个答案:

答案 0 :(得分:0)

看起来你在这里碰到了它:

  

以表格形式发送总数(可能作为隐藏变量)

由于您正在谈论将一个页面发布到另一个页面,而另一个页面显示结果,因此这里不需要AJAX。您可以像使用任何其他表单一样使用表单值。在这种情况下,“隐藏变量”实际上是input元素:

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

在JavaScript中,您在第一页上显示总和:

$("#output").html(sum);

您还可以将该总和设置为表单元素的值:

$("#output").html(sum);
$("input[name=sum]").val(sum);

只要input与其他form元素(如inputformSelected)位于同一formAddons内,那么当第一页发布时到第二页,第二页中的代码可以以相同的方式访问和值:

$_POST["sum"]

答案 1 :(得分:0)

在你的表单中,你应该添加一个隐藏的输入:

<input type="hidden"  name="sum"  value="">

然后在你的recalculate()(javasript)函数中,你应该在计算完所有内容后更改此输入的值:

function recalculate() {        
    var sum = 0;
    $("input[type=checkbox]:checked").each(function() {
        sum += parseInt($(this).attr("rel"));
    });
    $("#output").html(sum);

    // Change the hidden input value
    $("input[name='sum']").val(sum);
}

现在,提交表单时,您应该使用简单的方法访问服务器端(PHP)的和值:

$sum = $_POST['sum'];