Básicamente, parece que no entiendo el envío de una variable a otra página. He probado sesiones de PHP, cookies de javascript y ajax POST y GET. Estoy tratando de enviar el HTML interno de un div, con los datos creados por una llamada jQuery, una variable llamada savedartists . Se muestra correctamente en console.log en la página de envío, pero $_POST['savedArtists'] no está definido en la página de recepción. He pasado horas mirando diferentes publicaciones en este sitio, pero no he podido hacer que funcione. Cualquier ayuda es apreciada.
<input class="et_pb_button et_pb_button_0 et_pb_bg_layout_light" onClick="savequote();" type="button" id="savedchoices" value="Commander la prestation" > <script> function savequote() { var savedartists = document.getElementById('selectedList').innerHTML; console.log(savedartists); $.ajax({ type: "POST", url: 'example.com/artiste/mise-en-relation/', data: { savedArtists : savedartists }, success: function(data) { console.log("success!"); location.href = "example.com/artiste/mise-en-relation/"; } }); } </script>En la página de recepción (example.com/artiste/mise-en-relation/)
<?php if(isset($_POST['savedArtists'])) { $uid = $_POST['savedArtists']; echo $uid; } else { echo 'zit!'; } ?>Gracias por tu tiempo
Capturando como respuesta para futuros lectores...
Básicamente, lo que sucede aquí es que se realizan dos solicitudes a la página de destino. El primero es la solicitud AJAX:
$.ajax({ type: "POST", url: 'example.com/artiste/mise-en-relation/', data: { savedArtists : savedartists }, success: function(data) { //... } }); Esta es una solicitud POST que contiene los datos que espera y funciona bien. Sin embargo , el resultado de esta solicitud se está ignorando. Ese resultado está disponible en la success de llamada correcta, pero el código no hace nada con él:
console.log("success!"); location.href = "example.com/artiste/mise-en-relation/";En cambio, lo que está haciendo el código es realizar una redirección. Esto crea una segunda solicitud a esa misma página (aunque es esencialmente irrelevante que sea la misma página). Esta es una solicitud GET y no contiene datos para enviar al servidor.
En su forma más simple, debe usar AJAX o redirigir al usuario. Actualmente estás mezclando ambos.
Quiero redirigir a la otra página.
En ese caso, AJAX es la herramienta incorrecta para el trabajo. Es posible que ni siquiera necesite JavaScript en absoluto, a menos que desee modificar los elementos/valores de un formulario antes de enviarlo. Pero si todo lo que desea es enviar datos POST a otra página mientras dirige al usuario a esa página, un simple formulario HTML antiguo hace exactamente eso. Por ejemplo:
<form method="POST" action="example.com/artiste/mise-en-relation/"> <input type="text" name="savedArtists"> <button type="submit">Submit</button> </form> En este caso, cualquier valor que el usuario ingrese en <input> se incluirá en la solicitud POST a example.com/artiste/mise-en-relation/ cuando el usuario envíe el formulario.