He tenido este error durante varios días, he intentado buscar este error, pero cada vez que busco este error, da una razón diferente para el error y cuando intento agregar lo que dicen otros sitios, no funciona, por eso Pregunto aquí porque no veo qué más puedo hacer.
Estoy tratando de pasar una variable de JavaScript a PHP, pero no funciona y no tengo idea de por qué.
Aquí está mi código JavaScript:
<head> <script type="text/javascript" src="jquery.js"> </script> </head> <script> var variable = "hello"; console.log(variable); $.ajax ({ url: "ajax.php", type: "POST", data:{pass : variable}, success: function() { alert("Success"); } }); </script>Aquí está mi código PHP:
$variable = $_POST['pass']; echo($variable);Todo parece funcionar perfectamente. Escribe la variable en la consola, aparece la alerta que dice éxito. Sin embargo, recibo un mensaje de error que dice: 'Clave de matriz no definida "aprobada"'
¿Qué está causando esto? ¿Gracias?
Editar: la gente me ha dicho que use isset, agregué que eliminó el error, sin embargo, todavía no repite la variable de PHP, lo que significa que todavía no se ha pasado a PHP, todavía estoy tratando de encontrar cómo arreglar esto.
Su código frontal se ve bien, pero no conozco su entorno PHP de destino, pero tal vez su entorno no acepte formData .
De forma predeterminada, jQuery envía datos POST ajax como formData .
Intenta enviar datos como JSON
$.ajax({ url: "ajax.php", type: "POST", data: JSON.stringify({pass : variable}), dataType: "json", contentType: "application/json; charset=utf-8", success: function(data){alert(data);}, });Y luego probablemente tendrás que adaptar tu código php:
$json = file_get_contents('php://input'); // Converts it into a PHP array $data = json_decode($json, true); $variable = $data['pass']; echo($variable);¿Puede usar las herramientas de desarrollo en el navegador Chrome que lo ayudarán a encontrar si los datos se envían correctamente al archivo php? También puede probar $_REQUEST en lugar de publicar solo para verificar qué datos vienen en SOLICITUD, ya que funciona para GET y POST. Si todavía no te ayuda.
También puedes usar
data: {'pass':variable}en vez de
data: {pass:variable}déjame saber si te funciona.
Si obtiene este error en su archivo ajax.php en el que publica los datos, digo que es normal porque cuando abre ese archivo (ajax.php) es como si no hubiera $_POST['pass'] porque simplemente abrió ese archivo sin ejecutar JS para enviar datos. Si quieres recibir los datos que envías puedes hacerlo:
Su código JS lo llamo índice de archivo:
var variable = "hello"; $.ajax ({ url: "ajax.php", type: "POST", data:{pass : variable}, success: function(res) { alert(res); } });El archivo PHP:
$variable = $_POST['pass']; echo($variable); Luego, si abre ese archivo de índice, después de ejecutar el código JS, enviará los datos de la publicación a su archivo PHP y su archivo PHP hará eco de eso, luego el valor se almacenará en esa variable res que cuando todo salió bien, usted Puede ver la alerta de esa res en la página (archivo de índice).
Tenga en cuenta que, como dije, no puede abrir el archivo PHP solo porque no recibe una publicación de datos por sí solo, es normal que regrese undefined.