2010-02-06 9 views
12

En mi documento Tengo este script:

$.ajax({ type:"POST",url:"ajax.php",data:data, 
    success: function() { 
     //onsuccess 
    }, 
    error: function() { 
     //onerror 
    } 
}); 

¿Cómo puedo, en el documento ajax.php, lanzar deliberadamente un error? ¿Es suficiente arrojar un código de estado 400 HTTP o algo así? (Y si es así, ¿400 es el correcto?)

Por qué lo estoy preguntando es que quiero usar esto para enviar un formulario al servidor, y si un campo no se completa correctamente quiero alertar el usuario a través del parámetro de error en $.ajax. Sé que podría hacer esto usando javascript en primer lugar, pero espero poder hacerlo de esta manera (para no tener que escribir la verificación dos veces). Pero, por supuesto, al hacerlo de esta manera, no puedo separar los diferentes campos de la otra.

Sobre la base de lo que yo quiero usarlo para, de alguna manera puedo lanzar un "error personalizado", por lo que si el campo name no se ha completado correctamente, devuelve el nombre del campo (es decir name) ¿Es suficiente para hacer algo como esto:

En ajax.php:

if (isFilledOutProperly($name) == false) { 
    echo "name"; 
} 
else { 
    echo "success"; 
} 

Y:

success: function(data) { 
    if (data == 'name') { 
     //error 
    } 
      else { 
     //success 
    } 
}, 

que puede haber en el camino equivocado aquí, pero si alguien tiene una idea mejor sobre cómo puedo hacer esto, por favor dígame. ¡Gracias!

Respuesta

11

La error cláusula de $.ajax() llamadas no es realmente para las circunstancias a las que se refiere. error cubre casos de, por ejemplo, errores de HTTP. Las fallas de validación no son realmente errores en este caso. Es mejor que indique aquellos en la devolución de llamada success con los datos apropiados devueltos por el servidor.

Si nos fijamos en la documentation:

error(XMLHttpRequest, textStatus, errorThrown)Function 

Una función que se llamará si la petición falla . La función se pasa tres argumentos: El objeto XMLHttpRequest, una cadena que describe el tipo de error que se produjo y un objeto excepción opcional, si se dio. Los posibles valores para el segundo argumento (además de nulo) son "timeout", "error", "notmodified" y "parsererror". Este es un Ajax Event.

Nota: las condiciones de error de los que habla son errores de análisis, los tiempos de espera, errores (HTTP) y no modificados (que es otra respuesta HTTP).

Técnicamente su solicitud se realiza correctamente pero la validación falla, lo que no es un error per se.

+3

De acuerdo con el principio REST, responder a una solicitud POST con HTTP 200 significa que el recurso se ha creado correctamente. Puede responder con un HTTP 400 y también proporcionar información detallada sobre el error en el formato de texto/html/json/xml. – Leventix

+0

Lo sé, pero como estaba preguntando: puedo arrojar deliberadamente la parte de "error" de '$.ajax() 'al forzar un error de HTML? – Eikern

+0

Sí, si responde con otro que no sea HTTP 2xx, se llamará a la parte "error". – Leventix

Cuestiones relacionadas