如何从javascript变量发送表单值并在php中作为整数接收?

时间:2017-04-14 09:37:03

标签: javascript php html

我的表单将数据发布到名为numberActionPage.php的php。我想要发布的变量周围有两个按钮(一个+和一个-),它们只是通过添加或减去一个变量来更改变量。我遇到的问题是我找不到一种方法来检索我的Javascript number变量的值。我注意到的另一个潜在问题是$_POST在PHP中导致string。但是,我并不关心将负数发布到操作页面,因为实际程序中的数字永远不会低于1.

例如,我的Javascript看起来像这样:

var number = 5;

function subtractNumber()       {
        number--;
        document.getElementById("numberID").innerHTML = number;
}

function addNumber()    {
        number++;
        document.getElementById("numberID").innerHTML = number;
}

我的HTML看起来像这样:

<form action="numberActionPage.php" method="post">
    Number:
       <button type="button" onclick="subtractNumber()">-</button>
    <a id="numberID"> <input type="hidden" value="5" name="number">  <script>document.write(number);</script>        </a>    
       <button type="button" onclick="addNumber()">+</button>
    <br>
    <p><input type="submit" value="Submit" /></p>
</form>

我的numberActionPage如下所示:

$number = (int)htmlspecialchars($_POST['number']);
echo $number;

在actionNumberPage上输出= 5

所以,重申一下我的问题:我需要一种方法让我的表单中输入元素的value="5"部分接收javascript变量number的值。寻找诸如以下的东西:

value="<script>retrieveNumber()</script>"

另外,我是否正确准备了$_POST变量;正确地把它变成一个整数。

感谢您的时间和建议。

1 个答案:

答案 0 :(得分:2)

您要做的是更新名为number的隐藏输入并更改其值。这样当提交时,输入的值将被发送到下一页,就好像它是正常输入一样。我给输入的id为'inputNumber'

喜欢这样

<form action="numberActionPage.php" method="post">
    Number:
       <button type="button" onclick="subtractNumber()">-</button>
    <a id="numberID"> <input type="hidden" id="inputNumber" value="5" name="number">  <script>document.write(number);</script>        </a>    
       <button type="button" onclick="addNumber()">+</button>
    <br>
    <p><input type="submit" value="Submit" /></p>
</form>

更改脚本,以便在按下按钮时更新输入值。

function subtractNumber()       {
        number--;
        document.getElementById("numberID").innerHTML = number;
        document.getElementById("inputNumber").value = number;
}

function addNumber()    {
        number++;
        document.getElementById("numberID").innerHTML = number;
        document.getElementById("inputNumber").value = number;
}