Передать переменную Javascript на PHP POST

Возможный дубликат:
Запрос на отправку JavaScript, как отправить форму

У меня есть значение, вычисленное в JS, которое я хотел бы передать как часть формы ввода в PHP script. Как я могу получить значение JS для PHP в качестве параметра POST?

В принципе, при отправке мне нужен total var, который нужно передать через сообщение в следующий script.

Первой идеей, которая приходит на ум, является создание невидимой формы ввода, которая имеет значение в ней и вводится с формой, возможно ли это?

Ответы

Ответ 1

Да, вы можете использовать <input type="hidden" /> и установить значение этого скрытого поля в своем javascript-коде, чтобы оно было отправлено с вашими другими данными формы.

Ответ 2

Существует много способов добиться этого. Что касается того, как вы просите, со скрытым элементом формы.

создайте этот элемент формы внутри вашей формы:

<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>

Ответ 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". Последний параметр имеет значение true, если вы хотите использовать POST или false, если хотите GET.

Ответ 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 });