Announcement

Collapse
No announcement yet.

AJAX Internet Explorer Problem

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • AJAX Internet Explorer Problem

    Halli Hallo,

    ich versuche mich derzeit an meinen ersten Schritten in AJAX mit PHP. Ich habe den unten angefügten JavaScript-Code in einem .js-file, welches ich per script src in eine Webseite einbinde.

    Mit "GET"-Variablen funktioniert das in Chrome und IE (7.0.5730.13). Mit "POST" bekomme ich im IE immer nur die Antwort "200!!foo|". Dahinter sollten meine 2 Variablen stehen - das tun sie aber nur in Chrome. Die auskommentierten Zeilen habe ich alle bereits probiert - hat nichts geholfen.

    Ich habe jetzt schon eine Stunde lang versucht, bei Google eine Antwort zu kriegen - aber ich scheine der einzige mit dem Problem zu sein. Vielleicht kann mir hier jemand helfen?

    Danke & Grüße,

    Compu

    JavaScript :
    Code:
    var http = createRequestObject();
    
    mapAdditionalData();
    
    
    function mapAdditionalData(reportKeys) {
    	//alert("At least got here");
    	/*var table = Document.GetElementById("DetailDataTable");*/
    	
    	sndReq("http://[PFAD].php", "bla1=blubb&blubb1=bla");
    // hier steht natürlich der richtige Pfad ;)
    }
    
    /* http://www.easy-coding.de/ajax-mit-php-t556.html */
    function createRequestObject() {
    	var ro;
    	var browser = navigator.appName;
    	try {
    		ro = window.XMLHttpRequest ? new XMLHttpRequest() :
    		 new ActiveXObject("Microsoft.XMLHTTP"); // "Msxml2.XMLHTTP"
    	} catch (e) {
    		/* Kein AJAX Support */
    		
    	}
    	//alert(ro);
    	return ro;
    }
    
    
    
    
    
    /*  http://www.openjs.com/articles/ajax_xmlhttp_using_post.php */
    function sndReq(fileName, params) {
    	http.open('POST', fileName, true);
    
    	/* Send the proper header information along with the request */
    	//http.setRequestHeader("Man", "POST "+fileName+" HTTP/1.1");
    	//http.setRequestHeader("MessageType", "CALL");
    	http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    	//http.setRequestHeader("Content-length", params.length);
    	//http.setRequestHeader("Cache", "false");
    	
    	//http.setRequestHeader("Connection", "close"); // hiermit kommt gar keine antwort im IE zurück (http status 12154 o.ä.)
    
    
    	http.onreadystatechange = handleResponse;
    	http.send(params);
    	//alert("and here3!");
    }
    
    function handleResponse() {
    	if (http.readyState == 4) {
    		var response = http.responseText;
    		alert(http.status+"!!"+response);
    	}
    }
    PHP :
    Code:
    //header("content-type:application/xml;charset=utf-8"); 
    echo "foo|".$_POST['bla1'].$_POST['blubb1'];
    /edit : Achja, was vielleicht auch noch wichtig ist : Ich zeige das ganze in einem Popup an, welches ich mit Javascript öffne - das existiert also nicht direkt als Datei...
    Zuletzt editiert von Compufreak; 22.08.2011, 17:07.

  • #2
    http://jquery.com/

    http://api.jquery.com/category/ajax/

    ist browserübergreifend und macht die Sache einfacher

    Warum sendest du einen XML-Header, wenn du gar kein XML sendest? Bzw. wo is dein Header?
    Christian

    Comment


    • #3
      Danke für die Tips, ich wollte externe Bibliotheken vermeiden

      Den Header hatte ich nur testweise mal auf XML gesetzt, ist auskommentiert.

      /edit : Doch nicht gelöst... grml
      Zuletzt editiert von Compufreak; 22.08.2011, 17:11.

      Comment


      • #4
        Update : Irgendwie geht es jetzt doch nicht mehr... Gerade eben ging's doch noch... Das macht mich wahnsinnig :0

        Comment


        • #5
          Hallo,

          für einen POST-Request sind einige zusätzliche Header notwendig. Wenn du die alle auskommentierst, wird es sicher nicht funktionieren.

          Siehe dazu auch diesen Thread.

          Gruß Falk
          Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

          Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

          Comment


          • #6
            Dazu möchte ich noch sagen: JavaScript ohne externe Bibliotheken ist für mich ein nicht vertretbarer Aufwand. Alleine schon der DOM Zugriff mit z.B. JQuery ist der Hammer. Oder wolltest Du nur für AJAX keine Bibliotheken verwenden?

            Heutzutage JavaScript ohne Bibliotheken ist ja fast Selbstmord Oder man ist extrem masochistisch veranlagt.

            Comment


            • #7
              Originally posted by Falk Prüfer View Post
              Hallo,

              für einen POST-Request sind einige zusätzliche Header notwendig. Wenn du die alle auskommentierst, wird es sicher nicht funktionieren.

              Siehe dazu auch diesen Thread.

              Gruß Falk
              Wie geschrieben hatte ich diverse Dinge zu Testzwecken auskommentiert...


              Aber es scheint nicht an meinem JavaScript zu liegen - mit jQuery funktioniert es auch nicht. GET funktioniert einwandfrei, POST in Chrome ohne Probleme und im IE der bei uns hier installiert ist nur ab und an mal... Ich muss jetzt wohl oder übel bei meiner bisherigen GET-Lösung bleiben und auf dem Server meine Datenbankabfrage cachen, um nicht bei 100 GET-Anfragen 100 mal die Datenbank zu beschießen... Müssen leider so viele sein, da ja die GET-Länge beschränkt ist.

              Trotzdem Danke an alle für die Hilfe.

              P.S.: Da das "kleine" Javascript was mir die Daten per AJAX nachlädt das einzige auf der Seite ist, wollte ich sie nicht mit jQuery aufblasen solange das nicht nötig ist...

              Comment


              • #8
                Zu frühe Optimierung ist aber auch nicht gut... optimiere dich nicht zu tode. Jede halbwegs professionelle Homepage verwendet JQuery oder ähnliches. Wäre das wirklich ein performance Problem würden das diese Sites mit Sicherheit auch nicht verwenden. JQuery hat minified 31kb. Da verzichtest Du lieber irgendwo auf ein Bild, dann hast Du die Performance schon wieder eingespart und dafür hast Du wesentlich sauberen und einfacher zu pflegenden Javascript Code.

                Such mal auf google nach "premature optimization"

                Comment

                Working...
                X