1

我正在制作一个表格,将所选总数加起来(通过复选框)。在我的 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。我已经尝试了任何我能在其中找到的任何东西,要么里面没有列出正确的变量,要么把它放在错误的位置,要么就是完全错误。

正如我所提到的,我已经在论坛上倾注了与此相关的所有内容,但我发现的任何内容都不足以具体到我所拥有的一点点理解。在我尝试过的其他事情中:将javascript变量值传递给输入类型隐藏值并将Javascript变量传递给PHP POST,同时使用XMLHttpRequest,使用Ajax,将其作为隐藏变量传递(我倾向于但不要'不认为我正在正确实施)还有更多——这几乎是我昨天一整天工作所做的所有事情,所以我不想让我的问题变得多余——我只是不知道我哪里出错了.

4

2 回答 2

0

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

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

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

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

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

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

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

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

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

$_POST["sum"]
于 2013-10-04T12:46:48.697 回答
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'];
于 2013-10-04T12:49:40.833 回答