Tengo una secuencia de comandos php que toma alguna entrada del formulario del usuario y empaqueta algunos archivos en un archivo zip basado en esa entrada. El problema es que a veces los errores del servidor, por lo que se pierden todos los datos del formulario. Me dijeron que podía usar ajax en su lugar para que el usuario nunca tuviera que cambiar la página. Nunca he usado ajax, y mirando http://api.jquery.com/jQuery.ajax/ sin experiencia en ajax es bastante difícil.
La página dice que puede aceptar devoluciones de una llamada ajax. ¿Cómo se configuran las devoluciones en el archivo PHP para una llamada ajax? Si el servidor falla con la llamada ajax, ¿cómo lo sabré?
Editar: Además, ¿hay alguna manera de enviar una solicitud ajax con javascript y jquery como si fuera un formulario enviado?
3 respuestas
¿Cómo se configuran las devoluciones en el archivo PHP?
Simplemente echo en la página ajax que volverá como respuesta
Tutorial simple
client.php
$.post('server.php',({parm:"1"}) function(data) {
$('.result').html(data);
});
server.php
<?php
echo $_POST['parm'];
?>
El resultado será 1
Editar en comentarios OP ¿Hay alguna manera de usar ajax como si estuviera enviando un formulario
Sí hay
- Puede usar complementos como jQuery form
- Usando submit
- Si usa complemento de validación jquery, puede usar la opción de envío de controlador
Usando sumit
$('#form').submit(function() {
//your ajax call
return false;
});
Cada función ajax tiene una función param para manejar los retornos del servidor, y la mayoría de ellos tiene el mensaje param, que es el mensaje del servidor. páginas del servidor, por ejemplo, páginas php, puede usar echo something para devolver la información a la función ajax. a continuación hay un ejemplo
$.ajax({
url:yoururl,
type:post,
data:yourdata,
success:function(msg){
//here is the function dealing with infomation form server.
}
});
La forma más fácil de obtener información de PHP a JavaScript a través de AJAX es codificar cualquier dato PHP como JSON usando json_encode()
.
Aquí hay un breve ejemplo, suponiendo que los errores de su servidor sean detectables
<?php
try {
// process $_POST data
// zip files, etc
echo json_encode(array('status' => true));
} catch (Exception $e) {
$data = array(
'status' => false,
'message' => $e->getMessage()
);
echo json_encode($data);
}
Entonces, su código jQuery podría verse así
$('form').submit(function() {
var data = $(this).serialize();
$.ajax(this.action, {
data: data,
type: 'POST',
dataType: 'json',
success: function(data, textStatus, jqXHR) {
if (!data.status) {
alert(data.message);
return;
}
// otherwise, everything worked ok
},
error: error(jqXHR, textStatus, errorThrown) {
// handle HTTP errors here
}
});
return false;
});
Preguntas relacionadas
Preguntas vinculadas
Nuevas preguntas
php
PHP es un lenguaje de secuencias de comandos interpretado, dinámico, orientado a objetos y ampliamente utilizado, diseñado principalmente para el desarrollo web del lado del servidor. Se utiliza para preguntas sobre el lenguaje PHP.