2015-01-20 11 views
5

Ho codice come quellojQuery AJAX richiesta eventi - fatto, riuscire, successo

var ajaxrequest = $.ajax({ 
      type: "POST", 
      dataType: "json", 
      url: "xy.php", 
      data: { 
       action : "read" 
      } 
      }).fail(function(){ 
       //something to do when ajaxreq fails 
      }).done(function(data){ 

       //something to do when ajaxreq is done 
      }); 

Si sta lavorando non è un problema. La mia domanda è: perché questo non funziona:

var ajaxrequest = $.ajax({ 
      type: "POST", 
      dataType: "json", 
      url: "n3_vaje_api.php", //Relative or absolute path to response.php file 
      data: { 
       action : "read", 
      }, 
      fail:function(){ 
       //something to do when ajaxreq fails 
      }, 
      done:function(data){ 
       //something to do when ajaxreq is done 
      } 
     }); 

Fail and done sono solo esempi, completo non funziona se utilizzato all'interno. Ma il suo utilizzo al di fuori piace:

ajaxrequest.complete(f(){}); 

sta lavorando bene ... So che invece di fatto dovrei usare il successo, ma quello non è il mio punto qui. Qual è l'affare qui?

+1

è necessario utilizzare '' Success' e error' –

+0

Non dimenticate di upvote ed accettare risposta come ha funzionato per voi .. Grazie –

risposta

4

è necessario utilizzare il successo e l'errore è il metodo è necessario utilizzare se si desidera utilizzare il seconda opzione

questo è esempio di richiesta AJAX senza promessa, dove hai trovato la funzione di successo e l'errore come parametro di

$.ajax({url:"demo_test.txt" 
     ,error : function (xhr,status,error) 
     { //alert error} 
     ,success:function(result){ 
     $("#div1").html(result); 
    }}); 

Nel primo opetion si utilizza promessa di ritorno oggetto da ajax facciano richiesta che è la ragione che si sta sempre fatto e il metodo di fallire.

questo è esempio di oggetto promessa, in seguito ad esempio richiesta è oggetto promessa

var request = $.ajax({ 
    url: "script.php", 
    type: "POST", 
    data: { id : menuId }, 
    dataType: "html" 
}); 

request.done(function(msg) { 
    $("#log").html(msg); 
}); 

request.fail(function(jqXHR, textStatus) { 
    alert("Request failed: " + textStatus); 
}); 
+0

you.I po 'capire ora – zmajeric

+0

@ user3271259 - si può leggere su oggetto promessa in loco jquery o google ... e non dimenticare di upvote e accettare risposta –

-1

Si potrebbe semplicemente usare $ .post invece di $ .ajax e JSON come quarto argomento.

$.post("n3_vaje_api.php", {action : "read"}, function(response) { 
    // Do something with the request 
}, 'json') 
.done(function() { 
    alert("second success"); 
    }) 
    .fail(function() { 
    alert("error"); 
    }) 
    .always(function() { 
    alert("finished"); 
}); 
+0

È un incarico scolastico e ho usato la prima cosa che ho lavorato. Anche la richiesta AJAX era OBBLIGATORIA, quindi questa era la mia opzione. – zmajeric

0

Deprecation Avviso: Il jqXHR.success(), jqXHR.error(), e jqXHR.complete() callback vengono rimossi come di jQuery 3.0. È possibile utilizzare jqXHR.done(), jqXHR.fail() e jqXHR.always().