valor - send data from javascript to php
¿Cómo pasar datos de Javascript a PHP y viceversa? (9)
Creo que más o menos acabas de describir a Ajax .
(perdón por la breve respuesta)
¿Cómo paso si un script de Javascript solicita una página de PHP y le paso datos? ¿Cómo hago para que el script PHP pase los datos al script Javascript?
client.js:
data = {tohex: 4919, sum: [1, 3, 5]};
// how would this script pass data to server.php and access the response?
server.php:
$tohex = ... ; // How would this be set to data.tohex?
$sum = ...; // How would this be set to data.sum?
// How would this be sent to client.js?
array(base_convert($tohex, 16), array_sum($sum))
Hay algunas maneras, la más destacada es obtener datos de formulario u obtener la cadena de consulta. Aquí hay un método que usa JavaScript. Cuando haces clic en un enlace, llamará a los _vals (''mytarget'', ''theval'') que enviarán los datos del formulario. Cuando la página se publique, puede verificar si los datos de este formulario se han configurado y luego recuperarlos de los valores del formulario.
<script language="javascript" type="text/javascript">
function _vals(target, value){
form1.all("target").value=target;
form1.all("value").value=value;
form1.submit();
}
</script>
Alternativamente, puede obtenerlo a través de la cadena de consulta. PHP tiene sus funciones globales _GET y _SET para lograr esto, haciéndolo mucho más fácil.
Estoy seguro de que probablemente haya más métodos que sean mejores, pero estos son solo algunos de los que me vienen a la mente.
EDITAR: basándose en esto de lo que otros han dicho utilizando el método anterior tendrías una etiqueta de anclaje como
<a onclick="_vals(''name'', ''val'')" href="#">My Link</a>
Y luego en su PHP puede obtener datos de formulario usando
$val = $_POST[''value''];
Por lo tanto, cuando hace clic en el enlace que usa JavaScript, publicará los datos del formulario y cuando la página publique desde este clic, puede recuperarlo desde PHP.
Pasar datos de PHP es fácil, puedes generar JavaScript con él. La otra forma es un poco más difícil: tienes que invocar el script PHP mediante una solicitud de Javascript.
Un ejemplo (usando el modelo tradicional de registro de eventos por simplicidad):
<!-- headers etc. omitted -->
<script>
function callPHP(params) {
var httpc = new XMLHttpRequest(); // simplified for clarity
var url = "get_data.php";
httpc.open("POST", url, true); // sending as POST
httpc.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
httpc.setRequestHeader("Content-Length", params.length); // POST request MUST have a Content-Length header (as per HTTP/1.1)
httpc.onreadystatechange = function() { //Call a function when the state changes.
if(httpc.readyState == 4 && httpc.status == 200) { // complete and no errors
alert(httpc.responseText); // some processing here, or whatever you want to do with the response
}
}
httpc.send(params);
}
</script>
<a href="#" onclick="callPHP(''lorem=ipsum&foo=bar'')">call PHP script</a>
<!-- rest of document omitted -->
Cualquier cosa que get_data.php
, aparecerá en httpc.responseText. El manejo de errores, el registro de eventos y la compatibilidad entre navegadores XMLHttpRequest se dejan como simples ejercicios para el lector;)
Puede pasar datos de PHP a JavaScript, pero la única forma de obtener datos de JavaScript a PHP es a través de AJAX.
El motivo es que puede crear un JavaScript válido a través de PHP, pero para obtener datos en PHP necesitará ejecutar PHP nuevamente, y dado que PHP solo se ejecuta para procesar el resultado, necesitará una recarga de página o una consulta asincrónica.
Yo usaría JSON como el formato y Ajax (realmente XMLHttpRequest) como el mecanismo cliente-> servidor.
la otra manera de intercambiar datos de php a javascript o viceversa es mediante el uso de cookies, puede guardar cookies en php y leerlas con su javascript, para esto no tiene que usar formularios o ajax
Usar cookies es una manera fácil. Puede usar jquery y un pluging como jquery.cookie o crear el suyo propio. Usando Jquery + jquery.cookie, por ejemplo
<script>
var php_value = ''<?php echo $php_variable; ?>'';
var infobar_active = $.cookie(''php_value'');
var infobar_alert = any_process(infobar_active);
//set a cookie to readit via php
$.cookie(''infobar_alerta'', infobar_alerta );
</script>
<?php
var js_value = code to read a cookie
?>
Encontré estos útiles marcos de servidores e híbridos: http://www.phplivex.com/ http://www.ashleyit.com/rs/
He estado usando el Script RSJS de Ashley para actualizar valores en HTML sin ningún problema durante mucho tiempo hasta que conocí a JQuery (ajax, carga, etc.)
Me encuentro con un problema similar el otro día. Diga, quiero pasar datos del lado del cliente al servidor y escribir los datos en un archivo de registro. Aquí está mi solución:
Mi código simple del lado del cliente:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
<title>Test Page</title>
<script>
function passVal(){
var data = {
fn: "filename",
str: "this_is_a_dummy_test_string"
};
$.post("test.php", data);
}
passVal();
</script>
</head>
<body>
</body>
</html>
Y el código php en el lado del servidor:
<?php
$fn = $_POST[''fn''];
$str = $_POST[''str''];
$file = fopen("/opt/lampp/htdocs/passVal/".$fn.".record","w");
echo fwrite($file,$str);
fclose($file);
?>
Espero que esto funcione para ti y los futuros lectores!
Eche un vistazo a este hilo: obtener cookies de configuración en diferentes dominios, con javascript u otro
Allí escribí cómo usar ajax para leer una cookie de un archivo php ...