Thor05: innerHtml Problem

Hallo,
ich habe ein Problem mit Javascript, mit dem ich nicht fertig werde.
Ich versuche eine durch Ajax erstellte Tabelle in einem Div darzustellen, jedoch wird diese nicht angezeigt.
Die Ajax Abfrage funktioniert soweit, denn ich kann mitholfe von alert() die Tabelle ausgeben lassen.

Ich hoffe ihr könnt mir weiterhelfen.
Hier der Quellcode der HTML Datei mit Suche:

<?php  
session_start();  
require ("connect.php");  
require ("functions.php");  
if (!isset($_SESSION["loggedIn"]) || !isset($_SESSION["userName"])) {  
    header('Location: index.php?fehler=Bitte%20einloggen');  
    die("Fuck You!");  
}  
if ($_SESSION["loggedIn"] != TRUE) {  
    header('Location: index.php?fehler=Bitte%20einloggen');  
    die("Fuck You!");  
}  
?>  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
  
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">  
    <head>  
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
        <link type="text/css" rel="stylesheet" href="style.css" />  
        <script src="javaFunctions.js" type="text/javascript"></script>  
        <title>Q.S.</title>  
    </head>  
    <body>  
        <div id="master">  
            <div id="top">  
                <h1 class="mid"><a href="home.php">xxxxxxx</a></h1>  
            </div>  
            <div id="content">  
                <p>  
                    Suchbegriff: <input type="text" onkeyup="searchName(this.value)"/>  
                </p>  
                <div id="jsSearch"></div>  
            </div>  
        </div>  
    </body>  
</html>

Hier der Quellcode der JS Datei

  
var text = '';  
var xmlHttp = null;  
function searchName(string){  
    try {  
        // Mozilla, Opera, Safari sowie Internet Explorer (ab v7)  
        xmlHttp = new XMLHttpRequest();  
    } catch(e) {  
        try {  
            // MS Internet Explorer (ab v6)  
            xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");  
        } catch(e) {  
            try {  
                // MS Internet Explorer (ab v5)  
                xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");  
            } catch(e) {  
                xmlHttp  = null;  
            }  
        }  
    }  
    if(xmlHttp){  
        xmlHttp.open('GET', 'search_server.php?string=' + escape(string), true);  
        xmlHttp.onreadystatechange = function(){  
            if(xmlHttp.readyState == 4){  
                document.getElementById('jsSearch').innerHtml = xmlHttp.responseText;  
            }  
        }  
        xmlHttp.send(null);  
    }  
}
  1. hi,

    naja, ich würde es erstmal mit dem innerHTML ohne den ajax-krempel probieren. Du verrätst zudem nicht, was in xmlHttp.responseText nun wirklich steht ...;

    mfg

    tami

    1. Also auch ohne den "Avax-Krempel" funktioniert es nicht.
      Selbst wenn ich
      document.getElementById('jsSearch').innerHtml = xmlHttp.responseText;
      Zu
      document.getElementById('jsSearch').innerHtml = "Blabla";
      Ändere passiert nichts.

      Die search_server.php

      <?php  
      session_start();  
      require ("connect.php");  
      require ("functions.php");  
        
      if (!isset($_SESSION["loggedIn"]) || !isset($_SESSION["userName"])) {  
          header('Location: index.php?fehler=Bitte%20einloggen');  
          die("Fuck You!");  
      }  
      if ($_SESSION["loggedIn"] != TRUE) {  
          header('Location: index.php?fehler=Bitte%20einloggen');  
          die("Fuck You!");  
      }  
        
      if (isset($_GET["string"])) {  
          ?>  
          <table class="mid">  
              <?php  
              $string = mysql_real_escape_string($_GET["string"]);  
              $array = array("geheim:D");  
              for ($i = 0; $i <= 4; $i++) {  
                  $tableName = $array[$i] . "s";  
                  $nameCol = $array[$i] . "Name";  
                  $idCol = $array[$i] . "Id";  
                  $query = mysql_query("SELECT * FROM $tableName WHERE $nameCol LIKE '%$string%'");  
                  while ($row = mysql_fetch_object($query)) {  
                      ?>  
                      <tr>  
                          <td><a href="showobject.php?id=<?php echo htmlspecialchars($row->$idCol); ?>&type=<?php echo htmlspecialchars($array[$i]); ?>"><?php echo htmlspecialchars($row->$nameCol); ?></a></td>  
                      </tr>  
                      <?php  
                  }  
              }  
              ?>  
          </table>  
              <?php  
          } else {  
              ?>  
          <p>  
              Bitte Objekt zum Suchen ausw&auml;hlen.  
          </p>  
          <?php  
      }  
      exit;  
      ?>  
      
      
      1. Tach,

        Also auch ohne den "Avax-Krempel" funktioniert es nicht.

        ereicht denn dein Ajax überhaupt readyState 4 und feuert das Event überhaupt? Wie sieht die Antwort aus, speziell der HTTP-Status-Code?

        mfg
        Woodfighter

        1. Ja, es erreicht Status 4, denn wenn ich dort einen alert() einbaue, der den xmlHttp.responseText ausgibt, funktioniert es einwandfrei.

          Ja, die JS datei ist im Head eingebunden. Und da in der Fehlerkonsole kein Fehler ausgegeben wird, denke ich auch, dass er das DIV findet.

          1. Om nah hoo pez nyeetz, Thor05!

            Ja, die JS datei ist im Head eingebunden. Und da in der Fehlerkonsole kein Fehler ausgegeben wird, denke ich auch, dass er das DIV findet.

            Es wird also ausgeführt, _bevor_ der body zusammengebaut wird.

            Matthias

            --
            1/z ist kein Blatt Papier.

            1. Om nah hoo pez nyeetz, Thor05!

              Ja, die JS datei ist im Head eingebunden. Und da in der Fehlerkonsole kein Fehler ausgegeben wird, denke ich auch, dass er das DIV findet.

              Es wird also ausgeführt, _bevor_ der body zusammengebaut wird.

              Matthias

              Auch das verschieben der Einbindung der JS Datei vor das schließende Body Tag bringt keinen Erfolg

      2. Om nah hoo pez nyeetz, Thor05!

        bist du sicher, dass document.getElementById('jsSearch') überhaupt was finden kann? Wo wird das JS eingebunden? Im head? Schlecht. Vor dem schließenden body-tag?

        Matthias

        --
        1/z ist kein Blatt Papier.

      3. hi,

        vielleicht musst du innerHTML schreiben?

        das da funzt:

          
        <div id="test">bla</div>  
        <button onclick="document.getElementById('test').innerHTML='blub'">button</button>  
        
        

        mfg

        tami

  2. Hi,

    document.getElementById('jsSearch').innerHtml = xmlHttp.responseText;

    innerHtml vs. innerHTML

    ~dave

    1. hi,

      Hi,

      document.getElementById('jsSearch').innerHtml = xmlHttp.responseText;

      innerHtml vs. innerHTML

      genau

      ~dave

      mfg

      tami