Portal > Foren > Ausschreibungssprachen und clientseitige Programmierung > JavaScript und AJAX > [AJAX] Problem mit onreadystatechange im IE
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 25.03.2006, 17:52 Nach oben    #1
Jay
Gast
 
Beiträge: n/a
Standard [AJAX] Problem mit onreadystatechange im IE

Hallo,

ich beschäftige mich seit gestern mit AJAX und habe gleich eine simple Vorschlagssuche programmiert.

Wenn ich aber im Internet Explorer onreadystatechange verwende und bei XMLHttpRequest.open den dritten Parameter auf true setze (sonst funktionierts ja nicht) funktioniert mein Script für eine Eingabe und danach passiert gar nix mehr. Was hab ich falsch gemacht?

Hier der Code mit onreadystatechange.
PHP-Code:
<html>
    <
head>
    
    <
script type="text/javascript">
    <!--
        var 
xhttp// the XMLHttpRequest Object
        
var oldValue;
        var 
target;

        function 
createXMLHttpRequest() {
           if (
window.ActiveXObject) { 
                try { 
                   
// IE 6 and higher
                   
xhttp = new ActiveXObject("MSXML2.XMLHTTP");
                } catch (
e) {
                    try {
                        
// IE 5
                        
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (
e) {
                        
xhttp=false;
                    }
                }
            }
            else if (
window.XMLHttpRequest) {
                try {
                    
// Mozilla, Opera, Safari ...
                    
xhttp = new XMLHttpRequest();
                } catch (
e) {
                    
xhttp=false;
                }
            }
        }
        
        function 
setDisabled(text) {
            
            
target.options.length=0;
            var 
obj = new Option(text,0);
            
target.options.add(obj,0);
            
target.disabled=true;
        }
        
        function 
init() {
            if (
document.all) {
                
target document.all.suggestions;
            }
            else if (
document.getElementById) {
                
target document.getElementById('suggestions');
            }
            
createXMLHttpRequest();
            
// set the select list to disabled as default
            
setDisabled("-- Bitte Suchbegriff eingeben --");
            
setFocus();
        }
        
        function 
updateContent() {

            if (!
xhttp)
                return;

            var 
document.getElementById("q").value;
            
            
// check if the input has changed
            
if (== oldValue)
                return;

            
oldValue q;
            
            if (
== "") {
                
setDisabled("-- Bitte Suchbegriff eingeben --");
                return;
            }

            
encodeURIComponent(q);
            
xhttp.onreadystatechange=updateContent_callback;
            
xhttp.open("GET","http://localhost/index.php?q="+q,true);
            
xhttp.send(null);
        }
        
        function 
updateContent_callback() {

            
// ensure the response is finished
            
if (xhttp.readyState==4) {

                if (
xhttp.responseText=="") {
                    
setDisabled("-- Kein Vorschlag gefunden --");
                    return;
                }
                else {
                    
target.disabled=false;
                }
            
                eval(
"var optionsArr = "+xhttp.responseText);
                
target.options.length=0;
            
                for(var 
i=0i<optionsArr.length;++i) {
                    var 
obj = new Option(optionsArr[i],i);
                    
target.options.add(obj,i);
                }
            }
        }
        
        function 
addText(ele) {
            
document.getElementById('q').value ele.options[ele.selectedIndex].text;
        }
        
        function 
setFocus() {
            
document.getElementById("q").focus();
        }
    
// -->
    
</script>
    
    <style type="text/css">
    <!--
    #suggestions {
        width:266px;
        margin-top:-1px;
    }
    -->
    </style>
    
    </head>
    
    
    <body onload="init();">
    
        <form action="http://google.com/search" method="get">
        <input onkeyup="setTimeout('updateContent()',100);" autocomplete="off" type="text" size="40" value="" name="q" id="q" />
        <input type="submit" value="Suchen" />
        <br />
        <select size="5" multiple="multiple" onchange="addText(this);" id="suggestions">
        </select>
        </form>  
    </body>
</html> 
Hier die Links zur Anwendung
Mit onreadystatechange: http://vc-gleisdorf.at/ajax/mit_onreadystatechange.html

Ohne onreadystatechange: http://vc-gleisdorf.at/ajax/ohne_onreadystatechange.html
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 25.03.2006, 19:49 Nach oben    #2
Jay
Gast
 
Beiträge: n/a
Standard

Problem gelöst:
Der onreadystatechange event handler muss nach XMLHttpRequest aufgerufen werden. Ich frage mich warum das nirgends steht oder bin ich einfach zu blöd zu m lesen.

Code:
xhttp.open("GET","http://localhost/index.php?q="+q,true);
xhttp.onreadystatechange=updateContent_callback;
xhttp.send(null);
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem E-Mails zu senden Jann Hendrik Plauderecke 7 25.05.2007 21:37
[CSS] Div + CSS + IE6 -> Problem Binary HTML, XML und CSS 5 14.02.2007 16:24
Logisches Problem beim einsatz von Ereignissen Prophet Allgemeine Java-Programmierung 19 05.06.2006 22:08
Problem mit Cookie und Reloads... Bookworm PHP-Programmierung 10 13.04.2006 12:09
OSX + Eclipse 3.1 Problem bacarni Eclipse 3 29.07.2005 21:19


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:05 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45