【问题标题】:Hidden field value is not appearing in query string隐藏字段值未出现在查询字符串中
【发布时间】:2012-05-31 20:40:59
【问题描述】:

我有一个 javascript 方法正在做一些计算。最后,我想将它存储在一个隐藏的字段中。方法如下:

<script>
function getQuantity(){
 var count = document.getElementById('hidden').value;
 var Quantity=new Array();
 var i=0;
 for(i=0; i<count; i++)
 {
    Quantity[i]=document.getElementById(i).value;
 }
var myJSONQuantity = JSON.stringify(Quantity,'');
alert(myJSONQuantity);

document.qForm.getElementById('hdnQuantityArray').value = myJSONQuantity;
alert(document.qForm.getElementById('hdnQuantityArray').value);
}
</script>

我在这里检查过,一切正常。最后一个警报正在打印正确的值。 这是表单,其中有一个按钮,我想通过方法 GET 提交字段:

<form  name="qForm" method="GET" action="CalculateTotal.php">
    <input type="hidden" id="hdnQuantityArray" name="hdnQuantityArray">
    <input type="submit" value="CheckOut" id="CheckOut" name="CheckOut">
</form>

我的查询字符串显示:

http://localhost/blazorange/Customer/CalculateTotal.php?hdnQuantityArray=&CheckOut=Submit

我希望这个hdnQuantityArray 在查询字符串中有一些值。

附:此 javascript 方法是从同一文件中另一个表单的提交按钮调用的。而这个表格是一个PHP表格。 这是另一个表单的提交按钮的代码:

<input type="submit" value=" Total " id="total" onClick="return getQuantity()">

编辑:

<table border=1>
    <form id="CartForm">    
        <tr>
            <td>
                <h2> <font color='Grey'>Item Name</font> </h2>
            </td>
            <td>
                        <h2> <font color='Grey'>Item Price</font> </h2>
            </td>
            <td>
                    <h2> <font color='Grey'>Quantity</font> </h2>
            </td>
        </tr>
    <?PHP

        /*     Displaying the total and purchased cart's items    */

            $j=0;
            $temp=new Item();
            while(isset($ItemsArray[$j])) {
        ?>
        <tr>
                        <?PHP

                    if (is_string($ItemsArray[$j])) {
                $temp=unserialize($ItemsArray[$j]);
                 }

                $ItemName=$temp->getItemName();
                $Price=$temp->getPrice();
            ?>

            <td>
                <font color='Black'><?PHP echo $ItemName; ?>
            </td>

            <td>
                <font color='Black'><?PHP echo $Price;  ?></font>
            </td>

            <td>
                <input type="text" id="<?PHP echo $j;?>"/> 
            </td>
            </tr>


        <?PHP $j++; }?>


        <table>
            <input type="button" value=" Total " id="total" onClick="getQuantity()">
            <input type="hidden" value="<?PHP echo $j; ?>" id="hidden">

        </form>
    </table>

【问题讨论】:

  • 使用&lt;input type="button" value=" Total " id="total" onClick="getQuantity()"&gt;
  • 我不是说这是唯一的问题
  • 我应该如何发布整个 HTML?它有点冗长。我应该吗??
  • 张贴整个表格。发布 JS 和 PHP 响应的所有内容。
  • 请现在检查。这是另一个表单的代码

标签: php javascript json hidden-field


【解决方案1】:

document.getElementById('hidden')

应该是

document.getElementById('hdnQuantityArray')

您发布的代码中没有 id 为“隐藏”的元素。

编辑:

您是说 JS 仅在 CartForm 提交时运行?这会重新加载页面,对吗?当页面重新加载时, hdnQuantityArray 为空。所以当你提交qForm时,那里什么都没有,因为页面加载了一个空白字段,并且JS没有再次运行。听起来对吗?

【讨论】:

  • 不,那是另一个隐藏字段。
  • @asma - 请给我们完整的 html
  • 我只想使用这个隐藏字段:hdnQuantityArray
  • 其实有两个提交按钮。单击第一个时,JS 函数会进行计算并将值放入隐藏字段中。当点击另一个按钮时,表单会被重定向。您的意思是提交表单时该值将为空吗?
  • 这就是问题所在。页面重新加载,hdnQuantityArray 现在为空。 JS 工作,但它在旧页面视图上工作。它永远不会在新加载的页面视图中运行。在第一个表单提交后,使用 PHP 预填充 hdnQuantityArray 值可能会更好。
【解决方案2】:

你不应该这样做吗:

document.getElementById('hdnQuantityArray').value = myJSONQuantity;
alert(document.getElementById('hdnQuantityArray').value);

我在 document.getElementById 调用中消除了不必要的“qform”。

【讨论】:

  • 不,没关系。因为页面上有两种形式。
猜你喜欢
  • 2012-01-23
  • 2013-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多