progger: AJAX funktioniert nicht

Hallo!
Ich habe auf meiner Seite folgenden Javascript Code:

  
function checkupdates() {  
	o = null;  
	o = new XMLHttpRequest();  
	  
	function empfang()  
	{  
 		if(o.readyState == 4 && o.status == 200)  
 		{  
  			var antwort = o.responseText;  
  			if(antwort == 'aktuell'){  
  				//aktuell  
  				document.getElementById('akt_vers').innerHTML = '<b>Aktuelle Version:</b> Alles aktuell';  
  			}else{  
  				//muss aktualisiert werden  
  				document.getElementById('akt_vers').innerHTML = '<b>Akutelle Version:</b> Bitte aktualisieren';  
  			}  
 		}  
	}  
  
	o.open('GET','http://localhost/ajaxtest.php',true);  
	o.onreadystatechange = empfang;  
 	o.send();  
}  

Wenn ich die Seite aufrufe und im Chrome die Javascript Konsole öffne bekomme ich diesen Fehler: "XMLHttpRequest cannot load http://app.it-maker.org/binaryclock/updatecheck.php?v=1.3. Origin null is not allowed by Access-Control-Allow-Origin."
Ich weiß damit jedoch nichts anzufangen.
Was ist an dem Script falsch?

Der Code der updatecheck.php:

  
<?php  
$v = $_GET['v'];  
  
if($v == '1.3'){  
	echo "aktuell";  
}else{  
	echo "nicht_akutell";  
}  
?>  

Die updatecheck.php funktioniert. Das habe ich über manuelles Aufrufen getestet.

  1. hi,

    Wenn ich die Seite aufrufe und im Chrome die Javascript Konsole öffne bekomme ich diesen Fehler: "XMLHttpRequest cannot load http://app.it-maker.org/binaryclock/updatecheck.php?v=1.3. Origin null is not allowed by Access-Control-Allow-Origin."
    Ich weiß damit jedoch nichts anzufangen.

    Übersetze die Fehlermeldung in eine, Dir verständliche Sprache und recherchiere mit den in der Fehlermeldung genannten Suchbegriffen.

    Tag: Same Origin Policy

    Horst

  2. Hallo!

    .'GET',http://localhost/ajaxtest.php',true);

    Normalerweise macht man Ajax-Anfragen an denselben Server. D.h. man gibt hier einen Pfad z.B. /ajaxtest.php an anstatt einer Vollen URL mit http://...

    Wenn ich die Seite aufrufe und im Chrome die Javascript Konsole öffne bekomme ich diesen Fehler: "XMLHttpRequest cannot load http://app.it-maker.org/binaryclock/updatecheck.php?v=1.3

    Was ist das nun für eine URL? Ist das deine Domain und geht die Anfrage von einer Seite auf derselben Domain aus?

    Ajax-Anfragen auf andere Domain als die der Seite sind auch möglich, aber dazu müsstest du dich mit Cross-Origin Resource Sharing (CORS) beschäftigen. Das erfordert, das der andere Server einen entsprechenden Access-Control-Allow-Origin-Header sendet.

    Grüße, Mathias

  3. Ok. Jetzt weiß erstmal wo der Fehler liegt.
    Ich werde dann mal nach einer Lösung suchen...

    Danke!

    Wenn noch Probleme auftauchen sollten, melde ich mich wieder.

  4. Ich habe jetzt eine ganze weile gesucht und nichts gefunden, wie ich das machen kann.
    Das Problem ist, dass ich den Request aus einer Android App sende, die ich mit PhoneGap erstelle. Ich kann also keine PHP Datei erstellen, die die Antwort des Servers "durchreicht".
    Hat jemand eine Idee, wie ich das machen kann? Es muss nicht unbedingt AJAX sein. Ich möchte einfach ein paar Daten an den Server senden und dieser soll mir dann abhängig von den Daten die Antwort senden.

    1. Hallo,

      JSONP funktioniert auch Domain-übergreifend.

      Ajax wie gesagt im Grunde auch, wenn der Server es mittels CORS erlaubt.

      Mathias

      1. Ajax wie gesagt im Grunde auch, wenn der Server es mittels CORS erlaubt.

        Also könnte ich in der PHP Datei auf dem Server einfach

          
        header("Access-Control-Allow-Origin: DOMAIN-DER-DATEI");  
        
        

        schreiben und ich kann AJAX verwenden?