2014-06-29 33 views
5

Non riesco a effettuare una funzione di callback degli errori di errore dopo 3 secondi. Ho provato con timeout, ma non passerà alla richiamata di errore dopo il tempo specificato! Non sono in grado di ricevere l'avviso Got timeout.Timeout non funzionante su richiesta postazione Ajax

Quando ho fatto riferimento a domande simili in questo sito con problemi simili, non mi ha aiutato. Tutti usano il tipo GET ajax. Sto usando la libreria jQuery 1.10.1.

script:

$.ajax({ 
    type: 'POST', 
    timeout: 3000, 
    url : "http://mydomain/Services.asmx/Best_Scores", 
    dataType: "text", 
    async:false, 
    crossDomain:true, 
    data: "strJsonRequest="+scoredata, 
    success: function (data) { 
    // Success code ... 
    }, 
    error: function (data, textStatus, errorThrown) { 
    if(textStatus == "timeout") { 
     alert("Got timeout"); 
    } 
    } 
}); 

Qualsiasi soluzione?

+0

Quanto tempo richiede RTT a 'http: // mydomain/Services.asmx/Best_Scores'? Forse l'url semplicemente non scade? – Amberlamps

+0

@Amberlamps: grazie per la risposta, prenderò 15-20 secondi! – byJeevan

+0

Hai provato ad avvisare qualcosa nella funzione di errore che non è presente nell'istruzione if? Forse 'textStatus' non è" timeout "?! – Amberlamps

risposta

13

Fix:

Change async : false a async: true

Motivo:

sincrono blocchi chiamata AJAX finché la richiesta è stata terminata. L'implementazione di un timeout non è possibile per motivi tecnici, poiché la chiamata AJAX dovrebbe essere eseguita in seguito.

Se una chiamata AJAX viene eseguita in un secondo momento, la funzione deve in qualche modo implementare una funzione di blocco, per impedire che il codice venga eseguito ulteriormente dopo la chiamata AJAX ed eseguirlo di nuovo dopo un timeout - non possibile.