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?

0
mowwwalker 26 ago. 2011 a las 07:42

3 respuestas

La mejor respuesta

¿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

Usando sumit

$('#form').submit(function() {
 //your ajax call
  return false;
});
0
Gowri 26 ago. 2011 a las 04:02

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.
  }
});
0
xingyue 26 ago. 2011 a las 03:51

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;
});
0
Phil 26 ago. 2011 a las 04:05