2011-01-04 16 views
3

Ich habe ein sehr seltsames Problem.Ajax Anruf abgebrochen Auto

Ich habe einen normalen Ajax-Aufruf, dass der Avatar das sie von Ihrem PC auf den Server laden ..

dies funktioniert manchmal, manchmal kann ich in Firebug unter dem Netz sehen, dass nach einiger Zeit Laden, es wird "Abgebrochen" und rot markiert.

Ich habe sogar ein Ajaxstart Ajaxend Loader-Symbol und das Symbol wird angezeigt, auch wenn es abgebrochen wird.

Warum passiert das und wie kann ich verhindern, dass es abbricht? Und vielleicht wie kann ich einen "Versuch es erneut" machen, wenn es abgebrochen wurde? .. Warum wird es sogar abgebrochen: S

Ive bemerkt, dass es auf größeren demension/size Dateien geschieht? Und auf der Datei, die es anfordert (fileupload.php), habe ich einen Checker dort, um einen Fehler zurückzurufen, wenn es größer ist. Aber ich denke, es ist auch in die Datei nicht bekommen, bevor es „Lags“ und hält ..

aktualisiert bestätigt: Dies geschieht, wenn ich versuche, Datei Ajax sendet mit größerer Größe ..

+0

Ihr Anruf ist wahrscheinlich Zeitüberschreitung. Welche Methode verwenden Sie zum Senden von Dateien? Können Sie Ihren '$ .ajax()' Aufruf posten? –

Antwort

2

Wie senden Sie Dateien über Ajax? Ajax unterstützt das Senden von Dateien nicht.

Wenn es ein Verbindungstimeout in der jQuery-Konsole ist, wird es in roter Farbe angezeigt und der Fehlerhandler der Ajax-Anforderung wird aufgerufen.

Sie können dort beliebige Bedingungen behandeln. Um das Problem timeout zu entfernen, können Sie Ihrer Ajax-Anfrage ein Attribut timeout hinzufügen. Ich denke, dass der Standardwert 30 Sekunden

$.ajax({ 
    url : "", 
    data : {}, 
    success : function(data, textStatus, XMLHttpRequest){ 
    }, 
    error: function(XMLHttpRequest, textStatus, errorThrown){ 
     if(textStatus == "timeout"){ 
      alert("timeout") 
     } 
    }, 
    timeout : 600000 
}); 

Da Sie diesen

$.ajaxFileUpload({ 
    ....., 
    timeout: 60000, 
    error: function (data, status, e) 
    { 
     if(status == "timeout"){ 
      alert("timeout") 
     }else{ 
      alert(status) 
     } 
    } 
}) 

ajaxfileupload versuchen verwenden und stellen Sie sicher, dass Sie keine maximale Dateigröße zum Hochladen in Ihrem Server eingerichtet haben.

+0

Ich benutze $ .ajaxfileupload mit URL: 'functions.php? Action = upload', secureidi: false, fileElementId: 'file', dataType: 'json', – Karem

+0

Wenn das Zeitlimit überschritten wird, kann ich eine Warnung ausgeben abgebrochen? – Karem

+0

Ich muss den Befehl ajaxfileupload sehen. Es wird einen Fehlerbehandler haben, den Sie verwenden können. –

0

Wahrscheinlich bekam abgebrochen, weil die Anforderung auf der Clientseite abgelaufen ist. Erhöhen Sie das Zeitlimit in jQuery.

+0

Was ist das Standard-Timeout und irgendein Vorschlag, wie das Timeout sein sollte? – Karem