2009-02-17 18 views

Respuesta

105

La documentación está aquí: http://docs.jquery.com/Ajax/jQuery.ajax

Pero, en resumen, la llamada ajax lleva un montón de opciones. los que está buscando son error y éxito.

Se podría llamar así:

$.ajax({ 
    url: 'mypage.html', 
    success: function(){ 
    alert('success'); 
    }, 
    error: function(){ 
    alert('failure'); 
    } 
}); 

he mostrado la función de éxito y error sin argumentos, pero pueden recibir argumentos.

La función de error puede tomar tres argumentos: XMLHttpRequest, textStatus y errorThrown.

La función de éxito puede tomar dos argumentos: data y textStatus. La página que solicitó estará en el argumento de datos.

+27

Tenga en cuenta el aviso de desaprobación aquí: http://bit.ly/nuiyyE. A partir de jQuery 1.8, los métodos de éxito, error y completo quedarán en desuso en su lugar, use: done, fail y always. – hitautodestruct

+13

Si leo correctamente, el aviso de desaprobación * solo * se aplica a success() etc. en el objeto jqXHR devuelto, pero no a los especificados utilizando el objeto de configuración. Entonces '$ .ajax (url) .success (...)' quedaría obsoleto y debería usar '$ .ajax (url) .done (...) 'en su lugar. '$ .ajax (url, {success: ...}' sigue siendo correcto, no veo avisos de obsolescencia en las descripciones individuales de esos miembros de configuración. –

+1

Una de estas respuestas documenta lo que @hitautodestruct ha mencionado. Haga la respuesta aceptada si así lo desea. – MrBoJangles

43

Si necesita una función de falla, no puede usar las funciones $ .get o $ .post; deberá llamar directamente a la función $ .ajax. Pasas un objeto de opciones que puede tener devoluciones de llamada de "éxito" y "error".

lugar de esto:

$.post("/post/url.php", parameters, successFunction); 

puede utilizar esta:

$.ajax({ 
    url: "/post/url.php", 
    type: "POST", 
    data: parameters, 
    success: successFunction, 
    error: errorFunction 
}); 

Hay un montón de otras opciones disponibles también. The documentation enumera todas las opciones disponibles.

+5

hay algo específico que se verifica en el lado del servidor, durante la llamada url.php? como en cómo sabría si la llamada fue exitosa o errónea? ¿Tengo que devolver verdadero/falso, nulo o algo por el estilo? Estoy probando esto en puntales, y un poco confundido lo que mi C.A la clase de decisión debería regresar. Como en la forma en que sé que algo pasó con éxito o no lo hizo .. –

+9

@Kaushik: Se basa en el código de estado HTTP devuelto por el servidor. Básicamente, todo lo que no sea 2xx o 304 (no modificado) se considera un error. Las otras condiciones son si la conexión se agota o no puede conectarse al servidor por alguna razón. –

+0

¡Perfecto! eso tiene sentido. Aclamaciones. –

2

Me preguntaba, ¿por que aún no ha proporcionan en jQuery en sí, así que hice algunos cambios en el archivo de jQuery ,,, aquí son el bloque de código cambiado:

bloque de código original:

post: function(url, data, callback, type) { 
    // shift arguments if data argument was omited 
    if (jQuery.isFunction(data)) { 
     type = type || callback; 
     callback = data; 
     data = {}; 
    } 

    return jQuery.ajax({ 
     type: "POST", 
     url: url, 
     data: data, 
     success: callback, 
     dataType: type 
    }); 

Bloque de código modificado:

 post: function (url, data, callback, failcallback, type) { 
     if (type === undefined || type === null) { 
      if (!jQuery.isFunction(failcallback)) { 
      type=failcallback 
     } 
     else if (!jQuery.isFunction(callback)) { 
      type = callback 
     } 
     } 
     if (jQuery.isFunction(data) && jQuery.isFunction(callback)) { 
      failcallback = callback; 

     } 
     // shift arguments if data argument was omited 
     if (jQuery.isFunction(data)) { 
      type = type || callback; 
      callback = data; 
      data = {}; 

     } 


     return jQuery.ajax({ 
      type: "POST", 
      url: url, 
      data: data, 
      success: callback, 
      error:failcallback, 
      dataType: type 
     }); 
    }, 

Esto debería ayudar al que intenta detectar el error en $ .Post en jquery.

Actualizado: o hay otra manera de hacer esto es:

$.post(url,{},function(res){ 
     //To do write if call is successful 
    }).error(function(p1,p2,p3){ 
      //To do Write if call is failed 
      }); 
+0

¿cómo se llama la notación 'post:'? ¿Es lo mismo que '$ .post()'? – ahnbizcad

+0

sí, está dentro del archivo jquery js – yashpal

28

usando jQuery 1.8 y superiores, debe usar los siguientes:

var request = $.ajax({ 
    type: 'POST', 
    url: 'mmm.php', 
    data: { abc: "abcdefghijklmnopqrstuvwxyz" } }) 
    .done(function(data) { alert("success"+data.slice(0, 100)); }) 
    .fail(function() { alert("error"); }) 
    .always(function() { alert("complete"); }); 

Mira la documentación tal como declaró @hitautodestruct .

+0

Esto se puede utilizar para $ .post y $ .get !! Como se muestra en [documentos] (http://api.jquery.com/jQuery.post/) – Brainfeeder

+1

Esta parece ser la mejor respuesta a partir de 2014. – TheCarver

+0

sigue siendo el mejor con v3.x en 2016 – qwertzman

-1

Este estilo también es posible:

$.get("mypage.html") 
    .done(function(result){ 
     alert("done. read "+result.length+" characters."); 
    }) 
    .fail(function(jqXHR, textStatus, errorThrown){ 
     alert("fail. status: "+textStatus); 
    }) 
Cuestiones relacionadas