9

Zusammenfassung ProblemJQuery Ajax zufällige Fehler in Chrome nur

Nach der Anmeldung mit Chrome über Formularauthentifizierung. Die Zielseite als returnUrl wird mein jQuery ajax Fehler, ohne den Server zu treffen. Die status code = 0 und die message = "error". (Kaum nützlich). Nachdem ich Firefox ausprobiert habe und nicht in der Lage bin, das Problem zu replizieren, denke ich, dass Chrome das Problem ist. Caches löschen, schließen und erneut öffnen wird nicht behoben. Der nächste Artikel, den ich finden kann, ist dies. jQuery Ajax - Status Code 0? jedoch die URL relativ ist, /Test

Ein weiterer SO Artikel: jquery ajax problem in chrome

Längere Beschreibung

ich einen Fehler mit jQuery Ajax bin immer. Es scheint, dass sofort nach der Anmeldung mit Formularauthentifizierung; die Zielseite (returnUrl), wird JS Fehler. Nach dem Aktualisieren der Seite (F5) funktioniert das Skript (meistens). Auch wenn Sie F5 nicht verwenden, können Sie mithilfe der JS-Navigation zur gleichen Seite wechseln (meistens). So direkt nach dem Login ist mein Haupttestpfad.

Auch die Navigation in einer anderen Registerkarte zu /Test Aktion direkt funktioniert. Die ursprüngliche Registerkarte enthält weiterhin Fehler, bis ich sie wie erwähnt navigiere oder aktualisiere.

Ich hatte Zeiten, wo die Navigation oder f5-Aktualisierung den Fehler nicht stoppt. So die Verwendung von "meist" im ersten Absatz.

Nach einem Tag und ein bisschen nicht in der Lage, einen soliden Grund durch Forschung, JS Debugger, Vereinfachung des Codes und verschiedene Szenarien zu finden; Ich muss um Hilfe bitten.

Javascript Fehler Feedback

Die meisten, die ich sammeln kann, ist ein status code of 0 und ein error message of "error".

Software und Versionen

ASP.NET MVC 3 
Chrome v28.0.1500.72 m 
jQuery v1.8.3 
AttributeRouting 

Mit Chrome, ich habe auch versucht, den Cache und die STRG + F5 Entleerung.

MVC
Ich habe eine von einer [Authorize(Roles = "Admin")] geschützt Aktion dieses Attribut deaktivieren scheint mein Problem zu lösen und dann auf später nicht. Also, tut mir leid, wenn frühere Aussagen verwechselt wurden. lol, kurz auf die Haare!

[GET("Test")] 
public ActionResult Test() 
{ 
    Console.WriteLine("Test"); 
    return new EmptyResult(); 
} 

folgenden JavaScript-Skript-Dateien sind nicht hinter einem Ordner, der mit Formularauthentifizierung geschützt ist.

jQuery doc.ready

ich ein jQuery Fehlerereignis haben, die ich verwendet habe, das Debuggen auf zu pausieren, den Inhalt der Objekte zu sehen.

//-- while I am using this method, I have also used the `error: ` 
//-- part of $.ajax with the same result. 
    $(function() 
    { 
     $(document).ajaxError(function (event, jqxhr, settings, exception) 
     { 
      Debug.Log("event: " + event); 
      Debug.Log("jqxhr: " + jqxhr.responseText); 
      Debug.Log("settings: " + settings); 
      Debug.Log("exception: " + exception); 
     }); 
    }); 

Ich habe eine jQuery-Methode, die mit den folgenden Ereignissen lädt.Während das folgende Skript aussieht, würde es den Server knallen. Es gibt Timing-Logik, um sicherzustellen, dass es nur alle 5 Sekunden trifft.

$(document).on('mousemove','*',function(e){ TestMethod(this,e,'mousemove');}); 

Javascript Methode

Das ist mein Ajax-Aufruf, die so einfach ist, wie ich es machen kann.

function TestMethod(sender, e, eventTrgger) 
    { 
     $.ajax(
     { 
      type: "GET", 
      url: '/Test', 
      dataType: 'html', 
      success: function (html) 
      { 
       //-- tested with nothing here. 
      } 
     }); 
    } 

Fiddler

Wenn der Fehler auftritt, Fiddler zeigt nicht eine GET-Anforderung, das heißt der Server nicht getroffen wird. Außerdem platziere ich einen Debugger Breakpoint in der Aktion bestätigt, dass die Aktion nicht getroffen wird.

Zusätzlich: Da der Ajax-Aufruf alle 5 Sekunden auftritt. Während auf der Seite und Status-0 und Fehler zu sehen- "Fehler"; Ich lösche den Cache und ohne die Seite zu aktualisieren, beginnt Chrome und die Ajax-Anfrage zu arbeiten. Zur Erinnerung, meine Chrome-Cache-Einstellungen sind auf so wenig Cache eingestellt, wie ich konfigurieren darf.

+0

Die Tatsache, dass das Entfernen von 'AuthorizeAttribute' funktioniert, und die Vorstellung, dass" der Server nicht getroffen wird "scheint völlig disjunkt zu sein. –

+0

Ich habe das Attribut gerade deaktiviert, aber auch zum Login-Formular mit einer returnURL ready navigiert. Das Problem ist aufgetreten. Ich habe das Q aktualisiert, um darauf hinzuweisen, dass es nach dem Lesen ... so viele verschiedene Wege versucht. –

+0

Ich habe ein sehr ähnliches Problem. Erhalte nach einigen Seitenauffrischungen einen Abbruch, und ich denke, es hat mit dem gleichen Problem zu tun. Ist das in Chrome 29 behoben? –

Antwort

8

Das Problem scheint ein Fehler bei der Verarbeitung von Caching für GET-Anforderungen durch Chrome 28 zu sein. Version 27 funktioniert genauso gut wie POST-Anfragen in Version 28.

Sie können das Problem umgehen, indem Sie in Ihrem $ .ajax() - Aufruf die Eigenschaft 'cache' auf false setzen.

+0

Gut. So weit, ist es gut! Ich werde es heute noch testen. Ich habe mein console.log durch eine Warnung ersetzt. Ich werde also bald genug wissen, ob diese Lösung funktioniert. Prost, um es zu finden. Vielleicht könnte ein Hyperlink zu dem Problem zur Antwort hinzugefügt werden? –

+0

hatte gerade dieses Problem in 29.0.1547.65 auf einem Mac, http 0 als Antwort auf $ .post Anrufe (also definitiv http Post). Charles zeigte keine HTTP-Anfrage. Debugging durch jquery gestartet, um herauszufinden, ob auf der xhr ein Fehler aufgetreten ist. Drohte mich für eine Weile verrückt, aber schließlich nur hinzugefügt? R = "+ Math.random() zu meiner URL (das war relativ -/Keepalive.ashx) und der http statusCode 0 ging weg und alles funktioniert wieder gut. – agrath

+0

Ich habe gerade diesen Fehler in Chrome 29 auch, es scheint in Chrome 30 behoben werden. Einstellung Cache auf falsche es in Chrome 29 für mich behoben – Xeli