Ajax Request

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

  • Ajax Request

    Hallo Leute

    Also, ich hab schon im Forum nach Lösungen gesucht und bin auch auf was gestossen. Hab mich auch n bissel probiert zu informieren.

    In der Index hab ich diesen Code:
    PHP-Code:
    <script type="text/javascript" src="js/prototype.js" ></script>

    <script type="text/javascript">
      var day = document.getElementById('day').value;
      var month = document.getElementById('month').value;
      var year = <?php echo date("Y",time()); ?>;
      var userid = <?php echo $_SESSION['username']; ?>;
      
      function getRegHours() {
        var myAjax = new myAjax.Request('reghours.php',{ method: 'get', onComplete: showRegHours() } );
      }

      function showRegHours(originalRequest) {
       document.getElementById('reghours').innerHTML = originalRequest.responseText;
      }
    </script>
    Die Prototype.js ist korrekt eingebunden - Pfad stimmt.

    Die reghours.php liegt im gleichen Verzeichnis wie die index.php

    Die funktion getRegHours() wird bei einem Dropdown menü aufgerufen per onChange.

    Das Ziel des Codes:

    Tag und Monat kann ausgewählt werden. Sobald sich bei diesen zwei DRopdows was verändert, soll die PHP Datei neu geladen werden, welche den Inhalt dann in ein DIV schreibt.

    Das Div hat id="reghours".

    Bis jetzt hat die Glaskugel gesagt, das dies mit diesen oben genannten Funktionen möglich sei.


    Das Problem:

    Auch wenn ich was ändere, wird im DIV nichts angezeigt.

    Der InternetExplorer gibt mir an, dass ein Fehler auf der Seite existiert. Dieser lautet:

    'Request' ist not an object

    An was kann denn das liegen?

    Gruss

    Luca

  • #2
    Hey,

    es muss new Ajax.Request heißen. Da du Prototype verwendest, kannst du das ganze aber auch vereinfachen:

    Statt Ajax.Request verwende Ajax.Updater

    http://www.prototypejs.org/api/ajax/updater

    PHP-Code:
    function getRegHours() {
      var 
    myAjax = new Ajax.Updater('reghours''reghours.php', {method'get'});

    Prototype kann noch mehr für dich tun:

    Statt

    document.getElementById('reghours')

    kannst du auch

    $('reghours')

    schreiben. Statt

    document.getElementById('day').value

    einfach

    $F('day')

    Kommentar


    • #3
      Vielen Dank schon mal! So weit 'funktionierts'.

      Die PHP Seite wird geladen (darin wird per $_GET aus der URL die wichtigen Daten geholt) und zeigt mir an, dass auf diesen Tag/Monat noch nichts in der DB steht.

      PHP-Code:
        var day $F('day');
        var 
      month $F('month');
        var 
      year "2008";
        var 
      userid "32";
        
        function 
      getRegHours() {
          var 
      myAjax = new Ajax.Updater('reghours''reghours.php?user='+userid+'&day='+day+'&month='+month+'&year='+year, {method'get'});
        }

        function 
      showRegHours(originalRequest) {
          $(
      'reghours').innerHTML originalRequest.responseText;
        } 
      aaaaber: an diesen Tagen, wo eigentlich was drin steht, zeigts mir trotzdem nichts an.

      Geht das so oben wie ich die var myAjax definiert hab (wegen &day etc.), oder muss ich das anders lösen?

      Gruss

      Kommentar


      • #4
        Mein Fehler

        Ich hab ausversehen die Variablen ausserhalb der Funktion gehabt.

        Jetzt funktioniertS!

        Vielen Dank für deine Hilfe!

        Kommentar


        • #5
          Ups da gibts doch noch ein Problem..

          Wenn ich jetz beim Formular (unten dran wird ja das Zeugs mit Ajax angezeigt) was in die DB eintrage, soll es das unten auch gleich wieder anzeigen können, respektive: wenn ich manuell was in der DB lösche, wirds trotzdem noch angezeigt...

          Bis jetz geht das nur mit nem Neustart vom IE.

          Wie kann ich das sonst machen? :/

          Gruss

          Luca

          Kommentar


          • #6
            wie führst du das löschen aus?

            Du könntest es so machen (nur schnell eingetippt, muss also nicht 100% stimmen ):

            Code:
            function deleteRecord(id_xy){
            
            new Ajax.Request('deleteRecord.php',{ method: 'get', parameters: 'id='+id_xy, onComplete: function(){ getRegHours(); } } );
            
            }
            
            <input type="button" value="loeschen" onClick="deleteRecord(id_xy)">
            Erklärung: Sobald du auf den Button loeschen klickst, wird ein Request auf die PHP Datei gestartet. Am besten machst du dann noch eine Abfrage der Statuscodes (näheres siehe hier: http://prototypejs.org/api/ajax/request) oder lässt dir eine Statusmeldung von der PHP datei zurückgeben. Wenn das abgeschlossen wurde führst du als Callback die getRegHours() aus und damit wird die Liste neu geladen.
            Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
            - ...und solche Behauptungen in "falsches Resourcenmanagement"

            Kommentar

            Lädt...
            X