[Ajax/Javascript] Probleme mit dem ie..

WhiZZler

Chancentod²
ID: 85586
L
6 Mai 2006
588
32
begrüße!

ich bin vor einigen tagen in ajax eingestiegen und hab mir ne kleine suche mit suggest gebastelt.. es geht um folgende seite: https://www.bier-auf.de/index.php?site=search
funktioniert wunderbar im firefox, opera und konqueror..
nur der gute alte ie motzt wieder rum..
bei manchen suchbegriffen bekomme ich gar keine rückmeldung (also auch nicht, dass keine ergebnisse vorhanden sind.. zb, wenn man nach "strom" sucht.. dafür müssten aber eigentlich ein paar vorschläge kommen.. ) wenn man zb nach "hub" sucht, dann bekommt man vorschläge.. aber nicht, wenn man nach "hu" sucht.. im php script wird in der datenbank nach "WHERE name LIKE '%hu%'" gesucht.. deswegen macht das für mich auch wenig sinn :/

außerdem meldet der ie im gegensatz zu allen anderen browsern eine fehlermeldung.. zeile 82, zeichen 7, "'null' ist kein Objekt oder Null", code 0

seltsamerweise hat zeile 82 mit "null" überhaupt nichts zu tun.. diese zeile ist nämlich leer.. im code kommt einmal 'null' vor.. bei senden des requests..
Code:
      if (searchReq.readyState == 4 || searchReq.readyState == 0) {
        searchReq.open('GET', url + '?keyword=' + searchString, true);
        searchReq.onreadystatechange = handleSearchSuggest;
        searchReq.send(null);
      }

wenn ich aus null => Null oder NULL mache, dann ändert sich die fehlermeldung (Null ist nicht definiert).. deswegen gehe ich davon aus, dass doch in dieser zeile der fehler liegt..

hier noch der code um zeile 82: (hier ist es die zeile 4)
Code:
      var response = searchReq.responseXML.documentElement;
      xmlSuggestions = new Array();
      xmlSuggestions = response.getElementsByTagName('name'); 

      //anzahl der ergebnisse in numResults speichern
      numResults = xmlSuggestions.length;

      //wenn keine ergebnisse gefunden wurden, wird das angezeigt
      if(numResults == 0) {  
         showNoResults(searchString);  
      }
      else {
        ...  
      }

falls ich den gesamten code posten soll ist das kein problem.. aber ich will hier keinen mit 250 zeilen erschlagen ;)

danke im vorraus,
mfg
whizzler
 
Zuletzt bearbeitet:
ich glaube der IE kommt mit dem XML-Output nicht klar.

Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <response>    <name>Bierkasten</name>    <name>Grillrost</name>    <name>Schaumfestiger</name>    
<name>Telefonstation</name>    <name>Klobürste</name>    <name>Steckerleiste</name>    <name>Zahnpastatube
</name>    <name>Duschwannenstöpsel</name>    <name>Heißkleberpistole</name>    <name>Schreibtischstuhl
</name>    <name>Dekostein</name>    <name>Staubsaugerrohr</name>    <name>Fäustel</name>    <name>Externe
 Festplatte</name>    <name>Postkasten</name>    <name>Stromkasten</name>    <name>AV-Stecker</name>

Da sind zwischen den Tags mehrere Leerzeichen oder vielleicht auch nen Tab. Schau mal ob du die Zwischenräume rausbekommst bei der Generierung.
 
Spaces sind XML vollkommen egal, das Problem liegt woanders.

Wenn ich nach mu suche, ist in dem Resultset ein "ö", das parst der IE nicht (link im IE öffnen), suche ich jedoch nach mul in dem kein Sonderzeichen drinne vorkommt, funktioniert es, du hast wahrscheinlich mit dem Encoding was falsch gemacht.
 
ah.. ok.. danke für den tip! schau mir das mit dem encoding nochmal an..

ich hatte bis auf die xml (bzw php) datei alles mit iso-8859-1 kodiert.. habe die xml datei jetzt auch mit iso-8859-1 kodiert (utf-8 wäre mir lieber gewesen.. hatte auch zwischenzeitlich alles auf utf-8.. aber da wurden die umlaute in jedem browser nur als fragezeichen angezeigt) und es geht schon besser, aber immer noch nich richtig.. im ie werden jetzt auch suchvorschläge mit umlauten angezeigt.. allerdings bekommt man keine ergebnisse, wenn man nach einem umlaut sucht (zb ü wird zu %C3%BC gemacht.. und alle auf den umlaut folgende zeichen werden ignoriert..)

gibt es eine möglichkeit, das auch noch zum laufen zu bringen? oder bleibt mir nix anderes übrig, als die umlaute im php teil in html entities umzuwandeln?

edit: sorry wegen doppelpost.. aber wenn ich den vorigen post editiere, dann liest das ja kein mensch mehr ;)
 
Zuletzt bearbeitet von einem Moderator:
im ie werden jetzt auch suchvorschläge mit umlauten angezeigt.. allerdings bekommt man keine ergebnisse, wenn man nach einem umlaut sucht (zb ü wird zu %C3%BC gemacht.. und alle auf den umlaut folgende zeichen werden ignoriert..)
da werden non-ASCII-Werte urlencodiert (denn eine URL darf nur aus bestimmten Zeichen bestehen), nimm mal auf PHP-Seite urldecode

nebenbei bemerkt, hast du deinen Js-Code kaputt gemacht:
mySuggest.js (Linie 98)
suggestTable is not defined
suggestTable.innerHTML = div;
 
danke.. hab den fehler wohl gestern mit nem riesenkater unter extremem schlafmangel eingebaut, als ich versucht habe, nen cache zu basteln.. nuja.. jetzt läuft es wieder ;)

hab um das wort, das im php script in der datenbank gesucht wird ein urldecode() gemacht.. ( $keyword = urldecode(mysql_real_escape_string($_GET['keyword'])); )

allerdings hab ich immer noch das gleiche problem.. :-?
 
schau dir den SQL-Query an der daraus wird, welche Ergebnisse der liefert und was daran falsch ist.
 
danke für den wink mit dem zaunpfahl ;)beim senden des xml requests hat ein escape gefehlt.. das senden des requests sieht jetzt so aus:
Code:
searchReq.open('GET', url + '?keyword=' + encodeURIComponent(escape(searchString)), true);

ich hatte dann noch das problem, dass der suchstring bei den vorschlägen nicht fett markiert wurde, wenn ich nach einem umlaut gesucht habe.. da hat logischerweise ein decodieURIComponent(searchString) gefehlt.. jetzt funktioniert alles, wie ich mir das vorgestellt habe ;)

vielen dank nochmal an ice-breaker! (kann dich leider nicht bewerten.. ;) )