【问题标题】:Pass Javascript Variable to PHP POST [duplicate]将 Javascript 变量传递给 PHP POST [重复]
【发布时间】:2012-04-10 13:14:44
【问题描述】:

可能重复:
JavaScript post request like a form submit

我有一个用 JS 计算的值,我想将它作为输入表单的一部分传递给 PHP 脚本。如何将 JS 值作为 POST 参数传递给 PHP?

基本上,在提交时,我需要将 total var 通过 post 传递到下一个脚本。

想到的第一个想法是创建一个不可见的输入表单,其中包含值并与表单一起输入,这可能吗?

【问题讨论】:

标签: php javascript ajax post


【解决方案1】:

有很多方法可以实现这一点。关于您询问的方式,带有隐藏的表单元素。

在您的表单中创建此表单元素:

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

所以你的表格是这样的:

<form id="sampleForm" name="sampleForm" method="post" action="phpscript.php">
<input type="hidden" name="total" id="total" value="">
<a href="#" onclick="setValue();">Click to submit</a>
</form>

然后你的 javascript 是这样的:

<script>
function setValue(){
    document.sampleForm.total.value = 100;
    document.forms["sampleForm"].submit();
}
</script>

【讨论】:

    【解决方案2】:

    是的,您可以使用 &lt;input type="hidden" /&gt; 并在您的 javascript 代码中设置该隐藏字段的值,以便它与您的其他表单数据一起发布。

    【讨论】:

    • 只要确保隐藏的文本框位于表单标签内即可。
    【解决方案3】:

    您可以使用 Ajax 来做到这一点。我有一个函数用于这样的事情:

    function ajax(elementID,filename,str,post)
    {
        var ajax;
        if (window.XMLHttpRequest)
        {
            ajax=new XMLHttpRequest();//IE7+, Firefox, Chrome, Opera, Safari
        }
        else if (ActiveXObject("Microsoft.XMLHTTP"))
        {
            ajax=new ActiveXObject("Microsoft.XMLHTTP");//IE6/5
        }
        else if (ActiveXObject("Msxml2.XMLHTTP"))
        {
            ajax=new ActiveXObject("Msxml2.XMLHTTP");//other
        }
        else
        {
            alert("Error: Your browser does not support AJAX.");
            return false;
        }
        ajax.onreadystatechange=function()
        {
            if (ajax.readyState==4&&ajax.status==200)
            {
                document.getElementById(elementID).innerHTML=ajax.responseText;
            }
        }
        if (post==false)
        {
            ajax.open("GET",filename+str,true);
            ajax.send(null);
        }
        else
        {
            ajax.open("POST",filename,true);
            ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
            ajax.send(str);
        }
        return ajax;
    }
    

    第一个参数是您要更改的元素。第二个参数是要加载到要更改的元素中的文件名。第三个参数是您正在使用的 GET 或 POST 数据,例如“total=10000&othernumber=999”。如果要使用 POST,则最后一个参数为 true,如果要 GET,则为 false。

    【讨论】:

    • 别人如何使用你的函数并将用户名、密码发送到 php 文件并读取它们在 PHP 文件中的值?
    【解决方案4】:

    您对隐藏表单元素的想法是可靠的。像这样的

    <form action="script.php" method="post">
    <input type="hidden" name="total" id="total">
    </form>
    
    <script type="text/javascript">
    var element = document.getElementById("total");
    element.value = getTotalFromSomewhere;
    element.form.submit();
    </script>
    

    当然,这会将位置更改为script.php。如果您想对用户不可见地执行此操作,您将需要使用 AJAX。这是一个 jQuery 示例(为简洁起见)。无需表单或隐藏输入

    $.post("script.php", { total: getTotalFromSomewhere });
    

    【讨论】:

    • 然后可以从$_POST['element']$_POST['getTotalFromSomewhere'] 访问该变量吗?
    • @Oliver 数据键是“total”所以$_POST['total']
    猜你喜欢
    • 2014-01-11
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    相关资源
    最近更新 更多