Duplicata possible:
demande de publication JavaScript comme un formulaire soumis
J'ai une valeur calculée en JS que je voudrais transmettre dans le cadre d'un formulaire d'entrée à un script PHP. Comment puis-je obtenir une valeur la valeur JS pour le PHP en tant que POST?
Fondamentalement, lors de la soumission, j'ai besoin que le total
var soit transmis par la poste au script suivant.
La première idée qui vient à l'esprit est de créer un formulaire de saisie invisible qui a de la valeur et est entré avec le formulaire, est-ce possible?
Oui, vous pouvez utiliser un <input type="hidden" />
et définissez la valeur de ce champ masqué dans votre code javascript afin qu'il soit publié avec vos autres données de formulaire.
Il existe de nombreuses façons d'y parvenir. En ce qui concerne la façon dont vous demandez, avec un élément de formulaire caché.
créez cet élément de formulaire à l'intérieur de votre formulaire:
<input type="hidden" name="total" value="">
Donc, votre formulaire comme celui-ci:
<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>
Ensuite, votre javascript quelque chose comme ceci:
<script>
function setValue(){
document.sampleForm.total.value = 100;
document.forms["sampleForm"].submit();
}
</script>
Vous pouvez le faire en utilisant Ajax. J'ai une fonction que j'utilise pour quelque chose comme ça:
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;
}
Le premier paramètre est l'élément que vous souhaitez modifier. Le deuxième paramètre est le nom du nom de fichier que vous chargez dans l'élément que vous modifiez. Le troisième paramètre est le GET ou POST données que vous utilisez, donc par exemple "total = 10000 & othernumber = 999". Le dernier paramètre est vrai si vous voulez utiliser POST ou false si vous voulez GET.
Votre idée d'un élément de formulaire caché est solide. Quelque chose comme ça
<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>
Bien sûr, cela changera l'emplacement en script.php
. Si vous voulez faire cela de manière invisible à l'utilisateur, vous voudrez utiliser AJAX. Voici un exemple jQuery (par souci de concision). Aucun formulaire ou entrée cachée requis
$.post("script.php", { total: getTotalFromSomewhere });