Ankündigung

Einklappen
Keine Ankündigung bisher.

Beitragsansicht

Einklappen

form action in include datei bei ajax

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

  • form action in include datei bei ajax

    Hi ich brauch mal wieder eure geniale Hilfe,

    und zwar hab ich eine main.php mit folgendem inhalt:

    PHP-Code:
    <table width="1000" border="0" cellspacing="0" cellpadding="0">
      <
    tr>
        <
    td><table width="1000" border="0" cellspacing="0" cellpadding="0">
          <
    tr>
            <
    td><a href="#" onClick="javascript:setRequest('content','overview.php')">Overview</a></td>
            <
    td><a href="#" onClick="javascript:setRequest('content','challenge.php')">Challenge</a></td>
            <
    td><a href="#" onClick="javascript:setRequest('content','player.php')">Player</a></td>
            <
    td><a href="#" onClick="javascript:setRequest('content','overview.php')">Browser</a></td>
          </
    tr>
        </
    table></td>
      </
    tr>
      <
    tr>
        <
    td><div id="content"></div></td>
      </
    tr>
    </
    table
    (nicht alles)

    durch klicken wird im div container 'content' immer eine andere datei dargestellt.(mit ajax gemacht)

    Meine player.php sieht folgendermaßen aus:

    PHP-Code:
    echo "<form action='player.php' method='Post'><input type='checkbox' name='Login2' value='jojo_dragon' /><br><input type='submit' value='Kick'></form>";

    $Login $_POST['Login2'];
    $client->query('Kick'$Login); 
    Jetzt zum Problem, wenn ich bei action player.php mache, werde ich durch klicken des buttons Kick an die player.php weitergeleitet(es wird also nur die player.php angezeigt, die player.php wird also nicht mehr im div container content angezeigt sondern als einzelne datei.) Wenn ich action weglass funktioniert das mit der method='post' überhaupt nichtmehr.

    Jetzt meine Frage wie mach ich das, das ich nach dem klicken des Buttons immer noch die main.php und im div container content den inhalt player.php angezeigt bekomme?

    Ich hoffe ich konnte das einigermaßen verständlich erklären

    mfg Jojo

  • #2
    Hallo,

    alle anderen Buttons/Links funktionieren und der Inhalt wird via Ajax geladen und in das Content Div eingebunden?
    Mfg Tomtaz
    "Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..."

    Kommentar


    • #3
      Ja funktioniert alles, nur wenn ich halt auf submit klicke, werd ich weitergeleitet zur player.php aber ich will ja das die player.php im div container content angezeigt wird und zwar auch nachdem ich auf submit(Kick) geklickt habe.(davor gehts ja)

      mfg Jojo

      Kommentar


      • #4
        Ich poste nochmal genauer vielleicht kann dann einer helfen.

        der ajax code in der .js

        PHP-Code:
            var request false;

            
        // Request senden
            
        function setRequest(id,tester) {
                
        // Request erzeugen
                
        if (window.XMLHttpRequest) {
                    
        request = new XMLHttpRequest(); // Mozilla, Safari, Opera

                
        } else if (window.ActiveXObject) {
                    try {
                        
        request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
                    
        } catch (e) {
                        try {
                            
        request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
                        
        } catch (e) {}
                    }
                }

                
        // überprüfen, ob Request erzeugt wurde
                
        if (!request) {
                    
        alert("Kann keine XMLHTTP-Instanz erzeugen");
                    return 
        false;
                } else {
                    var 
        url tester;
                    
        // Request öffnen
                    
        request.open('post'urltrue);
                    
        // Request senden
                    
        request.send(null);
                    
        // Request auswerten
                    
        request.onreadystatechange = function(){ 
                    
        interpretRequest(id);
                    }
                }
            }

            
        // Request auswerten
            
        function interpretRequest(id) {
                switch (
        request.readyState) {
                    
        // wenn der readyState 4 und der request.status 200 ist, dann ist alles korrekt gelaufen
                    
        case 4:
                        if (
        request.status != 200) {
                            
        alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status);
                        } else {
                            var 
        content request.responseText;
                            
        // den Inhalt des Requests in das <div> schreiben
                            
        document.getElementById(id).innerHTML content;
                        }
                        break;
                    default:
                        break;
                }
            } 
        dann die main.php

        PHP-Code:
        <html>
        <
        head>
        <
        title>Test || Main</title>
        <
        link rel="stylesheet" type="text/css" href="styles/main.css">
        <
        script src="includes/main.js" language="JScript" type="text/javascript"></script>
        </head>
        <body>
        <table width="1000" border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td><table width="1000" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td><a href="#" onClick="javascript:setRequest('content','overview.php')">Overview</a></td>
                <td><a href="#" onClick="javascript:setRequest('content','challenge.php')">Challenge</a></td>
                <td><a href="#" onClick="javascript:setRequest('content','player.php')">Player</a></td>
                <td><a href="#" onClick="javascript:setRequest('content','overview.php')">Browser</a></td>
              </tr>
            </table></td>
          </tr>
          <tr>
            <td><div id="content"></div></td>
          </tr>
        </table>


        </body>
        </html> 
        jetzt wird z.B. die player.php geladen (mit ajax) und wie kann ich dann in der player.php ein formular abschicken? weil das klappt so nicht wie oben die player.php ist.

        Danke für Antworten

        mfg Jojo

        Kommentar


        • #5
          Zitat von Jojo_44
          und wie kann ich dann in der player.php ein formular abschicken?
          Das ist entweder nur falsch formuliert oder Du hast den falschen Gedankengang. Die Ausgabe player.php wird an den Ajax-Handler im Browser geschickt, dieser ruft irgendwann Deinen onreadystatechange-Handler auf und dieser fügt irgendwann den Ausgabetext als HTML in das Dokument ein - im Browser. Und auch nur "aus dem Browser" heraus wird dann ein eventuell nachgeladenes Formular abgeschickt - PHP hat damit nichts mehr zu tun; es sendet nur irgendeine Zeichenkette, die der Browser dann mittels .innerHTML als HTML interpretiert und in das bestehende Dokument einfügt.
          Wenn Du das im Firefox testest, installier Dir mal Firebug.

          Kommentar


          • #6
            Ok danke, jop ist ein bisschen komisch ausgedrückt.

            Und wenn ich jetzt ein Formular das in der player.php ist, absenden möchte wie stell ich das dann an?

            Hab schon gegoogelt aber bin net so recht fündig geworden.

            mfg Jojo

            Kommentar


            • #7
              naja entweder du rufst mit dem submit button des formulars direkt die .php seite auf (bei <form action=deinedatei.php> den pfad einfügen, und einen submit button einbauen in den form bereich)
              oder du willst die seite nicht komplett neu aufrufen, und schreibst eine Javascript funktion, die über ajax dann per post deine formulardaten an die php schickt, und je nach rückgabewert dann die seite weiterbearbeitet.

              Kommentar


              • #8
                Ah danke, hab jetzt die ajax funktion erweitert so das das was ich mit dem formular abschick per request.send(das was gesendet werden soll) an die php gesendet wird.

                Jetzt hab ich nur noch ein Syntax Problem und zwar wie soll ich in der php die javascript funktion aufrufen?

                PHP-Code:
                ....
                echo 
                "<input type='Button' value='Kick' onClick='javascript:setRequest('content','player.php','das wird gesendet')'> ";
                .... 
                so funktioniert es logischerweise nicht, aber wie dann?

                mfg Jojo

                Kommentar


                • #9
                  Eigentlich hab ich ja gedacht, das die Frage ziemlich einfach ist, aber anscheihnend doch nicht, deswegn poste ich nochmal alles.

                  jetzt der ajax code in der .js

                  PHP-Code:
                  var request false;

                      
                  // Request senden
                      
                  function setRequest(id,tester,nachricht) {
                          
                  // Request erzeugen
                          
                  if (window.XMLHttpRequest) {
                              
                  request = new XMLHttpRequest(); // Mozilla, Safari, Opera

                          
                  } else if (window.ActiveXObject) {
                              try {
                                  
                  request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
                              
                  } catch (e) {
                                  try {
                                      
                  request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
                                  
                  } catch (e) {}
                              }
                          }

                          
                  // überprüfen, ob Request erzeugt wurde
                          
                  if (!request) {
                              
                  alert("Kann keine XMLHTTP-Instanz erzeugen");
                              return 
                  false;
                          } else {
                              var 
                  url tester;
                              
                  // Request öffnen
                              
                  request.open('post'urltrue);
                              
                  // Request senden
                              
                  request.send('name='+nachricht);
                              
                  // Request auswerten
                              
                  request.onreadystatechange = function(){ 
                              
                  interpretRequest(id);
                              }
                          }
                      }

                      
                  // Request auswerten
                      
                  function interpretRequest(id) {
                          switch (
                  request.readyState) {
                              
                  // wenn der readyState 4 und der request.status 200 ist, dann ist alles korrekt gelaufen
                              
                  case 4:
                                  if (
                  request.status != 200) {
                                      
                  alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status);
                                  } else {
                                      var 
                  content request.responseText;
                                      
                  // den Inhalt des Requests in das <div> schreiben
                                      
                  document.getElementById(id).innerHTML content;
                                  }
                                  break;
                              default:
                                  break;
                          }
                      } 
                  und die player.php

                  PHP-Code:
                  echo "<input type='Button' value='Kick' onClick='javascript:setRequest('content','player.php','du da')'>";


                  $name34 $_POST['name'];
                  echo 
                  $name34
                  so klappt das nicht, wie muss es den richtig heißen?

                  Bin dankbar für jeden Hinweis

                  mfg Jojo

                  Kommentar


                  • #10
                    ich versteh dein problem nicht ganz...

                    seh ich das richtig, du hast die player.php aufgerufen, dort wird ein buttom zum anklicken angezeigt, der wiederum die player.php aufruft und daten überträgt.

                    was willst du da noch aufrufen?
                    du musst doch nur die daten die du per Get oder Post überträgst auswerten in der player.php...

                    Kommentar


                    • #11
                      Naja ich brauch nix auswerten, nur anzeigen.(des hab ich ja schon).

                      Mein Problem ist eigentlich nur der Syntax

                      Der passt beim Button in der player.php nicht, und ich würde gerne wissen wie es heißen muss.

                      mfg Jojo

                      Kommentar


                      • #12
                        Code:
                         onClick='javascript:setRequest('content','player.php','du da')'
                        da liegt dein problem, du musst alle ' die innerhalb eines anderen ' strings sind escapen:


                        Code:
                         onClick='javascript:setRequest(\'content\',\'player.php\',\'du da\')'

                        Kommentar


                        • #13
                          Ok danke, bekomm aber trotzdem nichts angezeigt

                          player.php sieht jetzt so aus:

                          PHP-Code:
                          echo "<input type='Button' value='Kick' onClick='javascript:setRequest(\'content\',\'player.php\',\'du da\')'>"


                          $name34 $_POST['name'];
                          echo 
                          $name34
                          und der ajax code sieht immer noch genauso aus wie weiter vorne schon gepostet.

                          Bin langsam am verzweifeln

                          mfg Jojo

                          Kommentar


                          • #14
                            geb doch mal stück für stück deine variablen aus, im php per echo, und im javascript per alert(variable);
                            und verfolg wo es hängen bleibt.
                            Mozilla fehlerkonsole sagt auch nix?

                            Kommentar


                            • #15
                              Die Fehlerkonsole zeigt:

                              Fehler: illegal character
                              Quelldatei: ************
                              Zeile: 1, Spalte: 22
                              Quelltext:
                              javascript:setRequest(\

                              mfg Jojo

                              Kommentar

                              Lädt...
                              X