[PHP] ajax: generierte elemente nicht klickbar

Dieses Thema im Forum "Webentwicklung" wurde erstellt von teh_boiiingerrr, 13. August 2007 .

  1. 13. August 2007
    ajax: generierte elemente nicht klickbar

    so mädels, nun bin ich mal dran mit ausweinen

    ich bastel gerade an einer seite, die recht viel mit ajax macht, und stoße dabei auf was sehr merkwürdiges.

    folgender quellcode (ajaxtest.php):
    PHP:
    <? php

    if(isset( $_GET [ 'param' ])) {
        echo 
    "<button type=\"button\" onClick=\"alert('gedr&uuml;ckt');\">" $_GET [ 'param' ] . "</button><br />\n" ;
    } else {

    ?>
    <html>
        <head>
            <title>Ajax-Test</title>

            <script type="text/javascript">

            var http_request = false;
         
            function ajaxCall(param){
                http_request = false;
                if (window.XMLHttpRequest) { // Mozilla, Safari,...
                    http_request = new XMLHttpRequest();
                    if (http_request.overrideMimeType) {
                        http_request.overrideMimeType('text/xml');
                        // zu dieser Zeile siehe weiter unten
                    }
                } else if (window.ActiveXObject) { // IE
                    try {
                        http_request = new ActiveXObject("Msxml2.XMLHTTP");
                    } catch (e) {
                        try {
                            http_request = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch (e) {}
                    }
                }
                if (!http_request) {
                    alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
                    return false;
                }
                http_request.onreadystatechange = ajaxCallback;
                http_request.open('GET', 'ajaxtest.php?param='+param, true);
                http_request.send(null);
            }
         
            function ajaxCallback() {
                if (http_request.readyState == 4) {
                      var answer = http_request.responseText;
                      document.getElementById("filter_test_results").innerHTML = answer;
                } 
            }
            </script>

        </head>
        <body>

            <h2>Ajax-Test</h2>
                <table>
                    <tr>
                        <td>was eingeben</td>
                        <td>
                            <input id="input_text" type="text" name="input_text" size="30" maxlength="40" onKeyUp="ajaxCall(this.value);" onChange="ajaxCall(this.value);" />
                        </td>
                    </tr>
                </table>

            <div id="filter_test_results">
                hier kommt gleich was
            </div>

        </body>
    </html>
    <?php

    }

    ?>
    hintergrund: das teil funzt so ähnlich wie ein telefonbuch. ich gebe eine nummer ein, es werden per ajax gefilterte daten angefordert und ausgegeben. mit einem klick auf den/die generierten knopf/knöpfe gehts weiter.

    das lustige: die vom skript generierten elemente (ich hab anchors, buttons, inputs type=radio ausprobiert) reagieren erst beim 2. klick. irgendwie wird der focus innerhalb des documents falsch gesetzt. ich habs mit ner kleinen, selbstgebauten hackfunktion versucht (focus erst auf document, dann wieder aufs input-feld setzen), die tut ihren dienst aber nicht ganz.

    also... woran liegt's?

    p.s.: unvollständigkeiten im code sind versehentlich, im großen und ganzen sieht das teil deutlich sauberer aus.
     
  2. 13. August 2007
    AW: ajax: generierte elemente nicht klickbar

    Also ich sehe nichts verwerfliches und habe dieses Problem so noch nie feststellen können, ich habe jedoch eine Vermutung und zwar den MIME - Type des XML. Normalerweise ist der Inhalt der XML - Response nicht so einfach auszulesen und bei Manchen Browser auch Abhängig von der Validität des XML. Ich würde dir empfehlen, den Content-Type nicht zu überschreiben und es dann nochmal zu probieren! Solltest du wirklich konkretes XML als Response brauchen, dann schau dir nochmal den Workaround von selfhtml bzgl. AJAX - Tooltips an (Google hilft) oder versuch aus dem "einfachen" responseText ein DOM zu generieren!
     
  3. 14. August 2007
    AW: ajax: generierte elemente nicht klickbar

    versuch mal:
    PHP:
    echo  "<input type=\"button\" onClick=\"alert('gedr&uuml;ckt');\" value=\" { $_GET [ 'param' ] } \" /><br />\n" ;
    ansonsten kann es evt auch noch am doctype liegen.

    wenn du nen text anforderst aber den header auf text/xml setzt kommt es zu fehlern (schau mal in der fehlerconsole), das kann es auch sein. bzw makenx zustimm
     
  4. 15. August 2007
    AW: ajax: generierte elemente nicht klickbar

    hm, alles falsch das problem ist "onchange". der triggert nämlich, wenn das input-feld per mausklick verlassen wird (also auch, wenn der mausklick auf den button erfolgt). dann wird der button neu erzeugt und der klick kann nicht mehr dem button zugeordnet werden. komische sache, ist aber so...
     
  5. 16. August 2007
    AW: ajax: generierte elemente nicht klickbar

    O Mann, boing, auf die events hab ich gar nicht gedacht. So kann man sich irren, wundern tu ich mich trotzdem dass der dir so cross-browser technisch zugriff auf den xml knoten gewährt....mh mal testen vielleicht mache ich mir das sogar immer zu kompliziert.
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.