Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] [Ajax] Error: Object required

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] [Ajax] Error: Object required

    Hallo,

    ich bin neu in Ajax und komme nicht weiter. Ich habe 3 Textfelder. Wenn ich in das erste was eingebe, dann sollen im 2. und 3. Werte erscheinen, die per PHP-Script abgerufen werden. Allerdings bekomme ich beim ersten Buchstaben FM:

    Code:
    Line: 27
    Char: 4
    Error: Object required
    Code: 0
    URL: http://localhost/ajax.htm
    ajax.htm
    Code:
    <?xml version="1.0" encoding="iso-8859-1"?> 
    <!doctype html public "-//W3C//DTD XHTML 1.0 Transitional//DE" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> 
    <head>
    <title>Ajex-Test</title>
    <script type="text/javascript">
    <!--    
    var req = null;
    
    function handleTranslation()
    {            
     switch(req.readyState) 
     {
      case 4: if(req.status!=200) { alert("Fehler:"+req.status); }
      else
      {    
       //felder des formulars
       nachname_field = document.getElementById("nachname");
       funktion_field = document.getElementById("funktion");
       
       //antwort des servers
       xml = req.responseXML;
       nachname_resp = xml.getElementsByTagName("nachname")[0];
       funktion_resp = xml.getElementsByTagName("funktion")[0];
       
       //schreiben des ergebnisses
       nachname_field.value = nachname_resp.firstChild.nodeValue;
       funktion_field.value = funktion_resp.firstChild.nodeValue;
      }
      break;
                
      default:
       return false;
      break;     
     }
    }
                
    function translate()
    {         
    //erstellen des requests
    
    try
    {
     req = new XMLHttpRequest();
    }
    
    catch (e)
    {
     try
     {
      req = new ActiveXObject("Msxml2.XMLHTTP");
     } 
    
     catch (e)
     {
      try
      {
       req = new ActiveXObject("Microsoft.XMLHTTP");
      }  
    
      catch (failed)
      {
       req = null;
      }
     }  
    }
    
    if (req == null) alert("Error creating request object!");
                      
    //anfrage erstellen (GET, url ist localhost,
    //request ist asynchron      
     var url = 'ajax.php?translate='+
     document.getElementById('vorname').value;
    
     req.open("GET", url, true);
    
     //Beim abschliessen des request wird diese Funktion ausgeführt
     req.onreadystatechange = handleTranslation;
      
     req.setRequestHeader("Content-Type",
     "application/x-www-form-urlencoded");
     req.send(null);
    }
    
    //-->
    </script>
    
    <style type="text/css">
    
    label, input, select 
    { 
      display: block;
      float: left;
      width: 100px;
    }
    
    form br { /* Alle Zeilenumbrüche in Formularen auswählen */
      clear: left; /* das floating der labels und inputs aufheben */
    }
    
    label {
     text-align: right; 
     padding-right: 1em; 
    }
    
    </style>
    
    
    </head>
    <body><p>Finde den Typ:</p>
    <div id="eins">
    <form style="BORDER-RIGHT: blue 1px dashed; PADDING-RIGHT: 10px; BORDER-TOP: blue 1px dashed; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: blue 1px dashed; WIDTH: 400px; PADDING-TOP: 10px; BORDER-BOTTOM: blue 1px dashed">
        <label for="vorname">Vorname:</label> <input id="vorname" style="WIDTH: 200px" onKeyUp="translate();" name="vorname" type="text" /><br />
        <label for="nachname">Nachname:</label> <input id="nachname" style="WIDTH: 200px" readonly="readonly" name="nachname" type="text" /><br />
        <label for="funktion">Funktion:</label> <input id="funktion" style="WIDTH: 200px" readonly="readonly" name="funktion" type="text" /><br />
    </form>
    </div></body>
    </html>
    ajax.php
    Code:
    <?php
    header("Content-Type: text/xml");
    
    $vorname   = mysql_escape_string($_REQUEST['translate']);
    
    if ($vorname == "Hans") { $nachname="Dampf"; $funktion="Hausmeister"; }
    else if ($vorname == "Lisa") { $nachname="Meier"; $funktion="Chefin"; }
    else if ($vorname == "Fritz") { $nachname="aka Fritz"; $funktion="Fritzchen"; }
    else { $nachname="Ich habe nichts"; $funktion="gefunden! Try again!";  }
    
    echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
    ?>
    <translation>
        <vorname><?php echo $vorname; ?></vorname>
        <nachname><?php echo $nachname; ?></nachname>
        <funktion><?php echo $funktion; ?></funktion>
    </translation>
    Was mache ich falsch?

  • #2
    Bitte zuerst debuggen, z.B. mit alert().

    Kommentar


    • #3
      Oder besser mit console.log() sofern du Firebug installiert hast.

      Kommentar


      • #4
        In welchem Browser bekommst du den Fehler?
        @all: Im Safari und Firefox funktioniert es problemlos ...

        EDIT: So sollte es im IE funktionieren.
        PHP-Code:
        <?php

        header
        ("Content-Type: text/xml");

        $vorname   mysql_escape_string($_REQUEST['translate']);

        if (
        $vorname == "Hans") { $nachname="Dampf"$funktion="Hausmeister"; }
        else if (
        $vorname == "Lisa") { $nachname="Meier"$funktion="Chefin"; }
        else if (
        $vorname == "Fritz") { $nachname="aka Fritz"$funktion="Fritzchen"; }
        else { 
        $nachname="Ich habe nichts"$funktion="gefunden! Try again!";  }

        echo 
        "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
        ?>
        <translation><vorname><?php echo $vorname?></vorname><nachname><?php echo $nachname?></nachname><funktion><?php echo $funktion?></funktion></translation>
        EDIT2: Das war ein Schnellschuss in den Ofen. Also bei mir funktioniert dein Script im Firefox, Safari, IE5, IE6 und IE7.

        Kommentar


        • #5
          OK im IE 8 funktioniert es bei mir auch. In welchem Browser und bei welcher Eingabe bekommst du den Fehler?

          Kommentar


          • #6
            Zitat von phpdummi Beitrag anzeigen
            OK im IE 8 funktioniert es bei mir auch. In welchem Browser und bei welcher Eingabe bekommst du den Fehler?
            Das im Anfangsposting zu erwähnen, wäre zu einfach

            Kommentar


            • #7

              Kommentar


              • #8
                Danke für eure Antworten.

                Vergesst bitte alles was ich geschrieben habe, ich war einfach blind und zu blöd.

                Auf dem Webserver (Intranet-Projekt) war weder MySQL noch XML verfügbar. Das kann nicht gehen. Auf meinem privaten Webserver funzt es in allen Browser.

                Sorry. Topic closed.

                Kommentar

                Lädt...
                X