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

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

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

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

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

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

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

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

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

Вы можете сделать это с помощью 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 или false, если хотите GET.

Ваша идея скрытого элемента формы прочная. Что-то вроде этого

 <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 });