Enviar un arreglo de JavaScript a PHP a través de AJAX
Resuelto
abirgl
Mensajes publicados
147
Estado
Miembro
-
Pitet Mensajes publicados 2845 Estado Miembro -
Pitet Mensajes publicados 2845 Estado Miembro -
Bonjour,
Necesito pasar un array de JavaScript a PHP, para ello intenté usar AJAX, pero me aparece un mensaje de error "Indice indefinido: tab en ...", aquí está el código de mi archivo testajax7.php:
He puesto testajax7.php en url: de la función AJAX porque necesito el array en la misma página (todo el procesamiento se hace en la misma página)
Por favor, ¿cómo puedo modificar este código para poder recuperar el array en PHP?
Gracias de antemano
Configuración: Windows / Chrome 55.0.2883.87
Necesito pasar un array de JavaScript a PHP, para ello intenté usar AJAX, pero me aparece un mensaje de error "Indice indefinido: tab en ...", aquí está el código de mi archivo testajax7.php:
<script type="text/javascript">
var tab=['a','b','c','d'];
</script>
<script type="text/javascript">
$.ajax({
type: "POST",
url: "testajax7.php",
data: { tab : tab},
success: function() {
alert("Éxito");
}
});
</script>
<?php
$myTable = $_POST['tab'];
print_r($myTable);
?>
He puesto testajax7.php en url: de la función AJAX porque necesito el array en la misma página (todo el procesamiento se hace en la misma página)
Por favor, ¿cómo puedo modificar este código para poder recuperar el array en PHP?
Gracias de antemano
Configuración: Windows / Chrome 55.0.2883.87
1 respuesta
Hola,
Tu código funciona, pero en la primera carga de la página, la variable $_POST['tab'] aún no existe (se crea después por la solicitud AJAX), de ahí el mensaje de error.
Es necesario verificar la existencia de esta variable con isset o empty.
Aprovecho para mencionar:
- en HTML5, ya no es necesario especificar el atributo type para el código JS en las etiquetas script
- no es necesario abrir y cerrar las etiquetas script si no hay nada entre ellas
- puedes apuntar a la página actual usando el símbolo #
Ejemplo de corrección:
Que tengas un buen día,
Tu código funciona, pero en la primera carga de la página, la variable $_POST['tab'] aún no existe (se crea después por la solicitud AJAX), de ahí el mensaje de error.
Es necesario verificar la existencia de esta variable con isset o empty.
Aprovecho para mencionar:
- en HTML5, ya no es necesario especificar el atributo type para el código JS en las etiquetas script
- no es necesario abrir y cerrar las etiquetas script si no hay nada entre ellas
- puedes apuntar a la página actual usando el símbolo #
Ejemplo de corrección:
<?php if (isset($_POST['tab'])) { $myTable = $_POST['tab']; print_r($myTable); } else { ?> <script> var tab=['a','b','c','d']; $.ajax({ type: "POST", url: "#", data: { tab : tab}, success: function(data) { alert(data); } }); </script> <?php } ?> Que tengas un buen día,
gracias por los comentarios ^^,
he probado el código que publicaste pero no mostró nada, presioné f12 para ver lo que se muestra en la consola y encontré el error: "Uncaught ReferenceError: $ is not defined at ..."
:(
Dado que no lo habías especificado en tu primer código, pensé que ya lo habías incluido.
De lo contrario:
<?php if (isset($_POST['tab'])) { $myTable = $_POST['tab']; print_r($myTable); } else { ?> <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> <script> var tab=['a','b','c','d']; $.ajax({ type: "POST", url: "#", data: { tab : tab}, success: function(data) { alert(data); } }); </script> <?php } ?>PS: sin el
La tabla mostrada en la alerta proviene de la visualización de la tabla php. Si no necesitas recuperar el resultado de tu tratamiento php a través de javascript, entonces la solicitud ajax es innecesaria y podrías simplemente usar un formulario.
Creo que no expliqué bien mi necesidad, intentaré volver a explicar:
Tengo un array de javascript (no es el resultado de un procesamiento en php, es un simple array de javascript)
Ahora, quiero usar este array para un procesamiento en php, no he encontrado cómo pasarlo de javascript a php, me han dicho que ajax es la solución, y aquí estoy intentando transmitir mi array de javascript a través de ajax para finalmente obtener un array en php,
el array que necesito en php debe ser así:
$tab=array('a','b','c','d');
¿Es posible hacerlo con ajax o debo buscar otra forma de hacerlo?
PD: Todo el procesamiento debe llevarse a cabo en la misma página (en la url de la función ajax debe quedar #)
Muchas gracias por sus respuestas y esfuerzos.