将Javascript变量传递给PHP POST

Pet*_*zes 19 javascript php ajax post

可能重复:
JavaScript发布请求,如表单提交

我有一个在JS中计算的值,我想将其作为输入表单的一部分传递给PHP脚本.如何将JS值作为POST参数获取给PHP值?

基本上,在提交时,我需要将totalvar通过post传递给下一个脚本.

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

小智 15

有很多方法可以实现这一目标.关于你问的方式,有一个隐藏的表单元素.

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

<input type="hidden" name="total" value="">
Run Code Online (Sandbox Code Playgroud)

所以你的形式是这样的:

<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>
Run Code Online (Sandbox Code Playgroud)

那么你的javascript是这样的:

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


jos*_*aly 14

是的,你可以使用一个<input type="hidden" />并在你的javascript代码中设置该隐藏字段的值,以便它与你的其他表单数据一起发布.

  • 只需确保隐藏文本框位于表单标记内. (3认同)

小智 9

您可以使用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;
}
Run Code Online (Sandbox Code Playgroud)

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


Phi*_*hil 5

您关于隐藏表单元素的想法是可靠的。像这样的东西

<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>
Run Code Online (Sandbox Code Playgroud)

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

$.post("script.php", { total: getTotalFromSomewhere });
Run Code Online (Sandbox Code Playgroud)