este es mi html
<!-- <form action="view.php" method="post"> --> <input type="text" name="text" id="name"> <input type="submit" value="submit"> <!-- </form> -->No quiero enviar los datos usando el formulario Porque solo envía datos de atributos con nombre, por eso estoy enviando datos mediante el método $.ajax() y este es un script
$(document).ready(function () { var details = {}; $('input[type="submit"]') .click(function () { details = { name: $('input[type="text"]').val() }; $.post({ url: "view.php", method: "post", data: details, success: function (result) { console.log("done")} }); window.open('view.php','_self'); });});después de todo esto, quiero recuperar los datos en el archivo view.php pero no puedo lograrlo en ese archivo que muestra que la matriz está vacía
<?php var_dump( $_POST); //the array is empty ?>sugiérame algo por favor.
La solicitud ajax y la solicitud realizada desde window.open son dos solicitudes diferentes. Piense en ello como dos llamadas telefónicas diferentes que recibiría... Y no tener absolutamente ningún "recuerdo" de la conversación al final. Necesitarías una base de datos para esa "memoria" y es otra cosa.
Para enviar algunos datos al backend (para procesarlos) y desea obtener un resultado en la página original, use la devolución de llamada success .
HTML en la página original:
<input type="text" name="text" id="name"> <input type="button" value="submit"> <div id="backendResult"></div>JS en la página original:
$(document).ready(function () { var details = {}; $('input[type="submit"]').click(function () { details = { name: $('input[type="text"]').val() }; $.post({ url: "view.php", method: "post", data: details, success: function (result) { console.log("done") $('#backendResult').html(result) } }); }); });ver.php:
<?php $name = $_POST['name']; echo 'Hello '.$name.'!'; ?>Puedes hacer esto:
$(document).ready(function () { var details = {}; $('input[type="submit"]') .click(function () { details = { name: $('input[type="text"]').val() }; $.post({ url: "view.php", method: "post", data: details, success: function (result) { // {name : 'the text you typed'} console.log("done") $("body").load('view.php', function(){ $("#name").val(result.name); }); } }); }); });