mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Di 16.04.2024 18:02 Benutzername: Passwort: Auto-Login

Thema: AJAX Problem mit Internet Explorer vom 09.04.2008


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> AJAX Problem mit Internet Explorer
Autor Nachricht
caZpa
Account gelöscht Threadersteller


Ort: -

Verfasst Mi 09.04.2008 12:03
Titel

AJAX Problem mit Internet Explorer

Antworten mit Zitat Zum Seitenanfang

Ich arbeite mich grad etwas in Ajax ein...
Und zwar erzeuge ich als erstes ein Request-Objekt:
Code:
<script language="JavaScript" type="text/javascript">
//<![CDATA[
var xmlHttp = null;

if(window.XMLHttpRequest){
   xmlHttp = new XMLHttpRequest();
}else if(window.ActiveXObject){
   try{
      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
   }catch(ex){
      try{
         xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
      }catch(ex){
      }
   }
}
// ]]>
</script>


Dann rufe ich im body per OnLoad die Funktion schritt1() auf:
Code:
function schritt1(){
 if (xmlHttp) {
  alert(xmlHttp);
     xmlHttp.open('POST', 'aktion.php');
     xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;');
     xmlHttp.send('schritt=1');
     document.getElementById("content").innerHTML = xmlHttp.responseText;
 }
}

Im FireFox wird #content entsprechend $_POST['schritt'] richtig ausgegeben.
Im InternetExplorer aber bleibt der Container leer!
Die Variable xmlHttp gebe ich ja mit alert aus, und die ist
im FF = [object XMLHttpRequest]
aber im IE = [object]

Was ist in der Instanziierung falsch gelaufen?

//edit
im Opera ist xmlHttp = [object XMLHttpRequest]
#content bleibt trozdem leer

hilfe


Zuletzt bearbeitet von am Mi 09.04.2008 12:07, insgesamt 1-mal bearbeitet
 
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst Mi 09.04.2008 12:55
Titel

Antworten mit Zitat Zum Seitenanfang

Welche MSIE-Version denn?
Absolute AJAX-Grundlagen, würde ich mal sagen...
Statt das native Objekt zu nutzen:
Code:
var http = new XMLHttpRequest();

Mußt du beim MSIE auf das ActiveX-Objekt instantiieren.
Code:
var http = new ActiveXObject( "Microsoft.XMLHTTP" );

Der MSIE 7 kennt auch das XMLHttpRequest-Objekt.

Ich würde dir empfehlen, eine Abfrage wie die folgende einzusetzen:
Code:
var http;
if ( window.XMLHttpRequest )
{
   http = new XMLHttpRequest();
}
else if ( window.ActiveXObject )
{
   http = new ActiveXObject( "Microsoft.XMLHTTP" );
}
  View user's profile Private Nachricht senden
Anzeige
Anzeige
caZpa
Account gelöscht Threadersteller


Ort: -

Verfasst Mi 09.04.2008 13:01
Titel

Antworten mit Zitat Zum Seitenanfang

meinst du sowas, wie ich oben geschrieben habe?
 
pixelpapst303

Dabei seit: 06.07.2006
Ort: hamburg
Alter: 50
Geschlecht: Männlich
Verfasst Mi 09.04.2008 13:30
Titel

Antworten mit Zitat Zum Seitenanfang

hm,

vielleicht is schlicht weg noch nicht alles geladen, wenn du es in #content reinschreibst.
versuch doch mal...:

Code:

if (xmlhttp.readyState==4) {
    alert(xmlHttp.responseText);
}


ein...
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
caZpa
Account gelöscht Threadersteller


Ort: -

Verfasst Mi 09.04.2008 13:45
Titel

Antworten mit Zitat Zum Seitenanfang

danke, hab ich grad mal ausprobiert
Code:
alert(xmlhttp.readyState)


im FF = 4(fertig)
im IE = 1(läd)

Ich versuchs jetzt mal mit xmlHttp.onreadystatechange
Ich hoffe da liegt der Fehler

Habe ich beides im schlauen ajax-Büchlein überlesen Ooops
 
caZpa
Account gelöscht Threadersteller


Ort: -

Verfasst Mi 09.04.2008 14:18
Titel

Antworten mit Zitat Zum Seitenanfang

egal wie ich es drehe und wende, es funktioniert nicht im IE
Hier nochmal der Code:
Code:
<script language="JavaScript" type="text/javascript">
//<![CDATA[
var xmlHttp = null;
if(window.XMLHttpRequest){
   xmlHttp = new XMLHttpRequest();
}else if(window.ActiveXObject){
   try{
      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
   }catch(ex){
      try{
         xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
      }catch(ex){
      }
   }
}

function DatenAusgabe(){
    alert(xmlHttp.readyState);
   if(xmlHttp.readyState == 4){
       var div = document.getElementById("content");
       div.innerHTML += xmlHttp.responseText;
   }
}
window.onload = function(){
   xmlHttp.open('POST', 'aktion.php');
   xmlHttp.onreadystatechange = DatenAusgabe;
   xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;');
   xmlHttp.send('schritt=0');
}
// ]]>
</script>

onreadystatechange bewirkt scheinbar, dass sich beim ändern
des Request-Status die Ausgabefunktion aufgerufen wird, und
in dieser dann bei Status 4 der response-Text ausgegeben wird.
Zur überprüfung wird mit alert der Request-Status ausgegeben.
Im FF erscheint einmal die Meldung 4 und es wird alles richtig ausgegeben.
Im IE erscheinen 4 Meldungen von 1 bis 4 und es wird rein gar nichts ausgegeben.

Das kann doch nicht sein oder?

hilfe

//Edit
Scheiße!! Ich hab mal die prototype.js (für einen slide-Effekt) wieder
rausgenommen und jetzt klappt die Ausgabe mit dem IE. Wird zwar
an falscher Stelle platziert aber immerhin.

So ein... KÄSE * grmbl *


Zuletzt bearbeitet von am Mi 09.04.2008 14:27, insgesamt 1-mal bearbeitet
 
Zeithase

Dabei seit: 09.05.2005
Ort: Erfurt
Alter: 39
Geschlecht: Männlich
Verfasst Mi 09.04.2008 14:28
Titel

Antworten mit Zitat Zum Seitenanfang

Nimm' lieber gleich ein Framework und mach Dir das Leben einfach. Ansonsten mal Quick'n'Dirty-Copy-Paste-Before-IE7-Simple-Example aus meinem Ajax-Buch:

Code:
<html>
<head>
<script type="text/javascript">

    function createRequestObject() {
          var ro;
          var browser = navigator.appName;
          if(browser == "Microsoft Internet Explorer") {
              ro = new ActiveXObject("Microsoft.XMLHTTP");
          } else {
              ro = new XMLHttpRequest();
          }
          return ro;
      }

     var http = createRequestObject();

     function handleResponse() {
          if(http.readyState == 4){
              var response = http.responseText;
              if (http.status == 200) {
                document.getElementById('content').innerHTML = response;
              } else {
                document.getElementById('content').innerHTML = "Fehler: " + http.status + " " + http.statusText;
              }
          }
     }

     window.onload = function() {
        http.open('post', 'aktion.php');
        http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        http.onreadystatechange = handleResponse;
        http.send('schritt=0');
     }

</script>
<title>Beispiel</title>
</head>
<body>
<div id="content">

</div>
</body>
</html>
  View user's profile Private Nachricht senden
caZpa
Account gelöscht Threadersteller


Ort: -

Verfasst Mi 09.04.2008 14:42
Titel

Antworten mit Zitat Zum Seitenanfang

dankedanke, aber ich habs nun endlich!!

Habe jetzt prototype etc. nach meinem Script eingebunden.
Wenn man sie voher einbindet funktioniert es nicht überall.
Was fürne Geburt.. THX@ALL!
 
 
Ähnliche Themen Problem mit Internet Explorer
Problem mit dem Internet Explorer
Problem Kodierung im Internet Explorer 6
Dickes Problem mit dem Internet Explorer
Problem bei Wiedergabe von .gif im Internet Explorer
Problem mit Schriftart in Firefox und Internet Explorer
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.