2012-03-27 24 views
14

Duplicar posibles:
JavaScript post request like a form submitpaso variable Javascript a PHP POSTAL

Tengo un valor calculado en JS que me gustaría pasar como parte de un formulario de entrada a un PHP guión. ¿Cómo puedo obtener un valor del valor JS para el PHP como parámetro POST?

Básicamente, en el envío, necesito que la var total se pase por correo al siguiente script.

La primera idea que se me ocurre es crear un formulario de entrada invisible que tenga el valor y se ingrese con el formulario, ¿es posible?

+0

ver esto: http: //stackoverflow.com/questions/133925/javascript-post-request-like-a-form-submit –

Respuesta

13

Sí, podría usar un <input type="hidden" /> y establecer el valor de ese campo oculto en su código de JavaScript para que se publique con los demás datos de su formulario.

+3

Solo asegúrese de que el cuadro de texto oculto está dentro de una etiqueta de formulario. – javram

3

Su idea de un elemento de formulario oculto es sólida. Algo como esto

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

Por supuesto, esto va a cambiar la ubicación a script.php. Si desea hacer esto de forma invisible para el usuario, querrá usar AJAX. Aquí hay un ejemplo de jQuery (por brevedad). No se requieren formas o entradas ocultas

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

¿será accesible la variable desde '$ _POST ['element']' o desde '$ _POST ['getTotalFromSomewhere']'? – Oliver

+1

@Oliver la clave de datos es "total", por lo que '$ _POST ['total']' – Phil

7

Puede hacerlo utilizando Ajax. Tengo una función que utilizo para algo como esto:

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

El primer parámetro es el elemento que desea cambiar. El segundo parámetro es el nombre del nombre de archivo que está cargando en el elemento que está cambiando. El tercer parámetro es la información GET o POST que está utilizando, por ejemplo, "total = 10000 & othernumber = 999". El último parámetro es verdadero si quiere usar POST o falso si quiere GET.

12

Hay muchas maneras de lograr esto. En cuanto a la forma en que preguntas, con un elemento de formulario oculto.

crear este elemento de formulario dentro de su forma:

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

Así que su forma como esto:

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

Luego, su javascript o menos así:

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