2010-08-31 45 views
6

Estoy buscando una manera de desencadenar un error ajax en la devolución de llamada exitosa. He tratado de explicar mi código de problema a continuación:¿cómo puedo activar la devolución de llamada de error ajax en la devolución de llamada exitosa?

$.ajax({ 
url: requestURL, 
data: postData, 
type: 'post', 
success: function(response){ 
    if(response.Success){ 
     // do something 
    }else{ 
     // request workflow fails in this case, 
     // i have to trigger this ajax request's error callback 
    } 
}, 
error: function(){ 
    // do something on error case 
}, 
dataType: 'json' 
}); 

Respuesta

10
var errorhandler = function(xhr, textStatus, error){ 
    // do something on error case 
}; 

$.ajax({ 
    url: requestURL, 
    data: postData, 
    type: 'post', 
    success: function(response){ 
     if(response.Success){ 
      // do something 
     }else{ 
      errorhandler(); 
     } 
    }, 
    error: errorhandler, 
    dataType: 'json' 
    }); 
+1

Agradable, simple y al grano. :) – Joshua

+0

Asegúrate de hacer esto: 'errorhandler.apply (this, arguments);' para asegurarte de que el alcance y los argumentos siguen ahí (no serán los mismos, pero serán lo suficientemente buenos). – balupton

+0

@balupton: en general, estoy de acuerdo. Pero en este caso particular el alcance no importa. No es necesario acceder a 'this' dentro del controlador de errores. – jAndy

0

usted podría enviar un código de estado HTTP adecuado por lo que la respuesta de error se activa automáticamente.

El rango de error 4xx que pertenece a los errores del cliente puede ser una buena opción. La mayoría de las API utilizan estados HTTP para indicar errores junto con datos JSON/XML adicionales a medida que lo hace. Ver Twitter's response codes para un ejemplo.

+0

no puedo tocar el entorno del lado del servidor y estoy buscando el lado del cliente y estoy buscando una forma de llamar al caso de éxito. –

Cuestiones relacionadas