• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Ursachen für readyState == 0

DarkDragon193

Neues Mitglied
Nochmal hallo, Community!

Ich verwende AJAX um Inhalt in Form von Seiten anzufordern. Lokal auf meinem Test-Webserver funktioniert alles einwandfrei, aber wenn ich alles auf den Server online bringe, klappt es nicht mehr. Durch ein wenig "Debugging" stelle ich fest, dass readyState gleich 0 ist.

Welche sind denn Gründe für readyState == 0?

Mir ist bekannt, dass der Server Anfragen ablehnen kann. 0 kommt dabei raus, wenn er nicht einmal einen Header zurücksendet...
Als ich offline versucht habe, anstatt auf die lokalen Kopien der Seiten zuzugreifen auf die Seiten auf dem Server zuzugreifen. Das hat schon mal nicht geklappt, was mir beweist, es muss irgendwie "am Server" liegen. Kann es sein, dass mein Webhost irgendwie die Anfragen per AJAX ablehnt? Das kann ich mir allerdings nicht vorstellen, da der Server bestimmt nicht weiß, dass AJAX verwendet wurde...


Mit freundlichen Grüßen,


DarkDragon1993
 
Werbung:
Das hilft mir schon mal ein wenig. Aber woran könnte das dann liegen? Wie gesagt, offline funktioniert das ganze, online nicht. Und ich verwende jQuery...
Ich werde noch mal einen kleinen Test machen und schauen, ob es mit einer eigenen Implementierung von AJAX funktioniert. Dann suche ich Differenzen heraus...
 
Werbung:
Das hilft mir schon mal ein wenig. Aber woran könnte das dann liegen?
Das können wir nicht wissen, da du uns keine Informationen gibst. jquery ist ein weit verbreitetes Framework, d.h. dort ist der Fehler sicher nicht, er muss also in deiner Implementierung liegen.
 
Dass der Fehler nicht an jQuery liegt ist mir klar, das wollte ich damit eigentlich ausdrücken. Die Implementierung ist auch recht simpel...

Code:
function ReqCnt( page ) {
		if( $.trim( page ) === '' )
			return;
		var url = domain + "content/" + currLang + "/" + page,
			callback = typeof arguments[ 1 ] === "function" ? arguments[ 1 ] : function(){},
			ajax = $.ajax( {
				url : url,
				global : false,
				beforeSend : function( ) { this.callback = callback; this.uri = domain + currLang + "/" + page; },
				dataType : "html",
				success : function( data ) {
					currPage = page;
					$( "#content" ).html( data );
					showRecaptcha( );
					this.callback( );
				},
				error : function( xhr, status, err ) {
					MessageBox(
						localErrorsDispatched[ currLang ].ajaxReqCntCnt
							.replace( /\\i/, xhr.status ) // Hier habe ich mal readyState eingesetzt...
							.replace( /\\s/, err ),
						localErrorsDispatched[ currLang ].ajaxReqCntTtl
					);
				}
			} );
	}
Ich denke das meiste ist selbsterklärend.
Wie gesagt, offline funzt es, online nicht. Das verstehe ich nicht, wenn es auch offline nicht ginge würde ich es ja noch verstehen...
 
Ich blicke nicht genau durch was du da eigentlich probierst. Der Errorhandler wird gefeuert, wenn ein Fehler auftritt, in dem Fall ist ein readyState ja erst mal nicht verwunderliches.

Kann es sein, dass die SOP hier eine Rolle spielt? Ist das Skript unter der gleichen Domain erreichbar, wie das JS?
 
Werbung:
Stimmt, jetzt wo du es sagst fällt mir ein, dass es unlogisch ist den Error Handler so zu verwenden. Ich dachte, dass der success-Handler ausschließlich bei readyState == 4 && Status == 200 aufgerufen wird, was aber keinen Sinn macht. Natürlich wird es dabei auch aufgerufen, aber nicht ausschließlich... Von daher muss ich das ganze etwas überarbeiten. Danke für's Aufmerksam darauf machen! :]

Ansonsten ist das Skript wirklich auf der gleichen Domain wie das JavaScript. Wenn dem nicht so wäre würde es wahrscheinlich auch offline nicht funktionieren...
 
Zuletzt bearbeitet:
Zurück
Oben