kostenloser Webspace werbefrei: lima-city


Ajax funktioniert nicht, wie gewollt

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    raubritta

    Kostenloser Webspace von raubritta

    raubritta hat kostenlosen Webspace.

    Hallo,

    ich bin mache zur Zeit meine ersten Schritte in Ajax. Doch leider komme ich bei meinem Quellcode nicht weiter. Ich hoffe mir kann jemand helfen:

    also:
    ich habe in extern.php ein input Feld:
    ...
    <script type="text/javascript" src="javascript/ajaxchange.js"></script>                 
    ...
    <tr>
       <td>Bezeichnung der Einrichtung</td>
       <td><input type="text" id="reg_einrichtung" name="einrichtung" size="25" value=" <?=$row['einrichtung'] ?>" onBlur="change_einrichtung()"></input><span class="err" id="msg_einrichtung"></span></td>
    </tr>
    ...

    Nach dem onblur rufe ich ajaxchange.js auf:
    ...
    function createajax()
    {
            try
            {
                    ajax = new XMLHttpRequest();
            }
            catch (ms)
            {
                    try{ajax = new ActiveXObject("Msxml2.XMLHTTP");} catch (nonms)
                    {
                            try{ajax = new ActiveXObject("Microsoft.XMLHTTP");} catch (failed)
                            {
                                    ajax = null;alert("Kann kein XMLHttpRequest-Objekt erzeuegn!");
                            }
                    }
            }
    return ajax;
    }
    
    function change_einrichtung()
    {
            if (document.getElementById("reg_einrichtung").value.length<2)
            {
                    document.getElementById("msg_einrichtung").innerHTML="Hier sollte schon etwas hingeschrieben werden!";
                    valid_name=false;
            }
            else
            {
                    ajax=createajax();
                    ajax.open("POST", "ajax.php", true);
                    ajax.onreadystatechange = function()
                    {  
                            if(ajax.readyState==4){
                                    if(ajax.status==200){ 
                                            if (ajax.responseText=="change")
                                            {
                                                    //Hier sollte später der Eintrag der Änderung in die Datei kommen.
                                                    document.getElementById("msg_einrichtung").innerHTML="Geändert";
                                                    alert("|" + ajax.responseText + "|" ;);
                                                    valid_name=true;
                                            }
                                            else
                                            {
                                                    document.getElementById("msg_einrichtung").innerHTML="Nicht Geändert";
                                                    alert("|" + ajax.responseText + "|" ;);
                                                    valid_name=true;
                                            }
                                    }
                            }
                    };
                    ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
                    ajax.send("iseval="+document.getElementById("reg_einrichtung").value);
            }
    }
    ...

    Das heißt, ich aktiviere Ajax, überprüfe, ob etwas hingeschrieben wurde, und gehe dann zum ajax.php in dem gleichen Ordner über:
    <?php
            session_start();
            include("../includes/connect_db.php");  
    
            //Einrichtungsvergleich per AJAX
            if (isset($_POST['iseval']))
            {
                    $result3 =mysql_query("UPDATE auftrag SET einrichtung ='HI' WHERE id = '3'") or die (mysql_error());
                    echo "change";                
                    exit();
            }
            else
            {
                    $result3 =mysql_query("UPDATE auftrag SET einrichtung ='HI' WHERE id = '4'") or die (mysql_error());
                    echo "change";                
                    exit();
            }
    ?>


    Ich bin echt verzweifelt. Ich hab echt keine Ahnung, wo der Fehler liegen könnte. Er gibt mir weder im Compiler noch sonst wo fehlermeldungen aus. Er updated einfach den Auftrag nicht...

    Wäre echt über hilfe dankbar.


    Beitrag geändert: 10.8.2008 16:28:27 von raubritta
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Wird denn die Seite ajax.php überhaupt aufgerufen oder ist vllt im Javascript ein Fehler. Am Besten kann man sowas eigentlich mit der Firebug-Erweiterung beim Firefox rausfinden: http://getfirebug.com

    Hier bekommst du Javascriptfehler angezeigt und man kann auch nachgucken, welche HTTP-Requests gemacht werden/wurden.
  4. t*****b

    Es wäre auch eine Überlegung, auf ein Framework zurückzugreifen, da Ajax und DOM-Manipulation eine komplexe und aufwändige Sache sind. Solche Eigenentwicklungen sind zwar recht gut, um zu verstehen wie Ajax funktioniert, jedoch für die Tatsächliche Entwicklung von komplexeren Dingen sehr aufwändig (habe ich gemerkt, als ich einen Webbasierten IM geschrieben habe und da wochenlang dran saß, mit einem Framework dann aber wenige Tage gebraucht habe :biggrin: ). Mit zum Beispiel prototype (http://www.prototypejs.org/), welches auch Bestandteil vieler erweiterten Frameworks ist, ist dein Vorhaben mit nur wenigen Zeilen realisierbar und dann auch hundert prozentig funktionsfähig.
  5. Autor dieses Themas

    raubritta

    Kostenloser Webspace von raubritta

    raubritta hat kostenlosen Webspace.

    Vielen Dank für eure schnelle Antwort:

    @xhochy das ist ja gerade mein Problem. Ich finde keine möglichkeit, wie ich das überprüfen kann. Zu Firebug: vielen dank. Dadurch habe ich einen Fehler behoben. Firebug hat mir gesagt, dass es ajax = createajax(); heißen muss. Leider ist dadurch noch nicht der Fehler behoben worden.

    Es ist ein neuer Fehler gekommen:
    POST http://localhost/ZKD/ajax.php404 13ms ajaxchange.js (Linie 50)
    <h1>Objekt nicht gefunden!</h1>

    <p>

    Der angeforderte URL konnte auf dem Server nicht gefunden werden.



    Der Link auf der

    <a href="http://localhost/ZKD/extern.php%3fid=6">verweisenden

    Seite</a> scheint falsch oder nicht mehr aktuell zu sein.

    Bitte informieren Sie den Autor

    <a href="http://localhost/ZKD/extern.php%3fid=6">dieser Seite</a>

    &uuml;ber den Fehler.


    könnte es sein, dass das Problem ist, dass ich auf die Datenbank von Lima zugreife aber auf Localhost arbeite? Ich habe mal sowas gelesen...

    @trueweb: ich habe lange überlegt. Habe mir etliche Seiten angeschaut, angefangen mit Dojo und Backbase zu arbeiten. Aber letzendlich war das nichts. Es sind entweder Fehler aufgetreten, die nur von anderen zu lösen waren oder es gab die Funktion nur in ähnlicher Form. Ich wollte sowieso mal Ajax für mein Browergame lernen. Deshalb passt dies nur allzugut. Zur Zeit habe ich ja nur diese eine Funktion in Ajax ;) (naja es werden noch 2-3 folgen...)


    Also ich bin weiter über jede Hilfe gespannt. Hoffe es kann mir jemand helfen. Ich gehe meiner anderen Vermutung mal nach.
  6. Autor dieses Themas

    raubritta

    Kostenloser Webspace von raubritta

    raubritta hat kostenlosen Webspace.

    soo, leider war meine Vermutung richtig. Jetzt wird es aufgerufen. Aber:

    if (ajax.responseText=="change")

    wird VERNEINT! obwohl ich change eigentlich auch ausgeben müsste, wenn (isset($_POST['iseval'])) negativ ist. Ich blicke leider immernoch nicht durch :(
  7. Lass dir mal mit

    alert("|" + ajax.responseText + "|");

    den Text ausgeben die beiden | helfen evt. extra-Leerstellen zu finden
  8. Autor dieses Themas

    raubritta

    Kostenloser Webspace von raubritta

    raubritta hat kostenlosen Webspace.

    ich hab es direkt unter:

    document.getElementById("msg_einrichtung").innerHTML="Nicht Geändert";

    gesetzt. Er hat leider garnichts gemacht. Irgendwie komisch...

    ich werd mit wohl noch einige Stunden damit beschäftigen müssen. Wer noch Tipps hat: immer her damit.
  9. t*****b

    Schau dir mal Zeile 2 und 30 an ;)

    raubritta schrieb:
    ...
    function createajax()
    {
     try
     {
     ajax = new XMLHttpRequest();
     }
     catch (ms)
     {
     try{ajax = new ActiveXObject('Msxml2.XMLHTTP');} catch (nonms)
     {
     try{ajax = new ActiveXObject('Microsoft.XMLHTTP');} catch (failed)
     {
     ajax = null;alert('Kann kein XMLHttpRequest-Objekt erzeuegn!');
     }
     }
     }
    return ajax;
    }
    
    function change_einrichtung()
    {
     if (document.getElementById('reg_einrichtung').value.length<2)
     {
     document.getElementById('msg_einrichtung').innerHTML='Hier sollte schon etwas hingeschrieben werden!';
     valid_name=false;
     }
     else
     {
     ajax=create ajax();
     ajax.open('POST', 'ajax.php', true);
     ajax.onreadystatechange = function()
     { 
     if(ajax.readyState==4){
     if(ajax.status==200){ 
     if (ajax.responseText=='change')
     {
     //Hier sollte später der Eintrag der Änderung in die Datei kommen.
     document.getElementById('msg_einrichtung').innerHTML='Geändert';
     valid_name=true;
     }
     else
     {
     document.getElementById('msg_einrichtung').innerHTML='';
     valid_name=true;
     }
     }
     }
     };
     ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
     ajax.send('iseval='+document.getElementById('reg_einrichtung').value);
     }
    }
    ...



  10. Autor dieses Themas

    raubritta

    Kostenloser Webspace von raubritta

    raubritta hat kostenlosen Webspace.

    Zu Firebug: vielen dank. Dadurch habe ich einen Fehler behoben. Firebug hat mir gesagt, dass es ajax = createajax(); heißen muss.


    vielen Dank. Leider habe ich genau den Fehler schon gefunden. Siehe oben...


  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!