Ankündigung

Einklappen
Keine Ankündigung bisher.

Javascript über PHP-Skript in DIV-Container nachladen und ausführen

Einklappen

Neue Werbung 2019

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

  • Javascript über PHP-Skript in DIV-Container nachladen und ausführen

    Hi,

    ich benutze folgendes Skript um eine PHP-Seite immer in dem DIV-Container mainContent nachzuladen.

    Code:
    var XMLHTTP = null;
    
    if (window.XMLHttpRequest) {
      XMLHTTP = new XMLHttpRequest(); // IE 7, FF, Safari etc.
    } else if (window.ActiveXObject) {
      try {
        XMLHTTP =  new ActiveXObject("Msxml2.XMLHTTP"); // IE 5
      } catch (x) {
        try {
          XMLHTTP =  new ActiveXObject("Microsoft.XMLHTTP"); // IE 6
        } catch (x) {
        }
      }
    }
    
    function load(digit) {
      XMLHTTP.open("POST", "../visual/index.php");
      XMLHTTP.onreadystatechange = output;
      XMLHTTP.setRequestHeader("Content-Type",    "application/x-www-form-urlencoded");
      XMLHTTP.send("znum="+digit);
    }
    
    function output() {
      if (XMLHTTP.readyState == 4) {
        document.getElementById("mainContent").innerHTML = XMLHTTP.responseText;
      }
    }
    Das PHP-Skript verarbeitet den znum-Wert und soll die Möglichkeit haben, über ein Javaskript einen Kalendar anzuzeigen. Außerdem wird bei jedem Aufruf über die Funktion test_graph die temps.gif Datei neuerstellt. Leider klappt beides nicht, wenn ich die Website über die load() Funktion aufrufe.

    PHP-Code:
    <?php



    if (isset($_POST['znum'])) { 
    $_SESSION["znum"] = $_POST['znum'];}
    else {
    $_SESSION["znum"] = 10624686;}



         echo 
    ' <form id="form2" name="form2" method="post" action="'.$_SERVER['PHP_SELF'].'">';
             echo 
    '<table width="100%" border="0" cellspacing="10"><tr><td >';
         echo 
    ' Start: <input name="findstart" type="text" value="'.$_SESSION['findstart'].'" size="20" id="findstart" maxlength="20" />'
          
    ?>            

          <script language="JavaScript">new tcal ({'formname': 'form2',    'controlname': 'findstart',    });    </script>    </td>    
         
          <?php    echo '<td> Stop: <input name="findend" type="text" value="'.$_SESSION['findend'].'" size="20" id="findend" maxlength="20" />';      ?>            
          
          <script language="JavaScript">new tcal ({'formname': 'form2',    'controlname': 'findend',    });    </script></td>    
          
          <?php    
                   
         
    echo '<td><input type="submit" name="Submit" value="Suchen" action="'.$_SERVER['PHP_SELF'].'" target="_self"/>'
         echo 
    '<input type="submit" name="delete" value="Del" action="'.$_SERVER['PHP_SELF'].'" target="_self"/></td>'
         echo 
    '</form>';
         echo 
    '<form method="post" action="download.php">';
         echo 
    '<td><input type="submit"  value="Download"/></td>';
            echo 
    '    </form></tr></table></div>';



    $test=create_graph($starttime,$stoptime,$_SESSION["znum"]);    
    echo 
    "<p align=\"center\"><img src=\"../visual/temps.gif\" width=100%>"

    ?>
    Wie kriege ich das hin?

    Gruß kami

  • #2
    Hallo Kami,

    inwiefern soll der Kalender nachgelden werden? Werden deine XMLHTTP Aufrufe gecached? Ich habe soetwas mit jQuery UI realisiert. Die Hauptseite lädt unformatierte unterseiten über beispielsweise

    Code:
    function loadContent(pagename){
      $('#content_load').fadeIn();
      $.get(pagename, function(content){
        $('#content_main').html(content);
    	$('#content_load').fadeOut();
    	SetEffects();
      });
    }
    SetEffects ist eine allgemeine Funktion die dafür sorgt das der neue Content auch diverse Funktionen bekommt wie z.B. einen Kalender (jQuery UI).

    Code:
    function SetEffects() {
    	$('a').tooltip({ 
          showURL: false 
        });
    	$('#datepicker').datepicker();
    }
    Innerhalb des nachgeladenen Codes darfst du natürlich die JavaScript-Funktionen über z.B. Links wieder aufrufen

    Code:
    <a href="#" onclick="loadContent('auth/form')">Anmeldeformular</a>
    Wenn du nun ein Formular absenden willst kannst du nicht loadContent() verwenden hier nimmst du dann z.B.

    Code:
    function submitForm(formname,target) {
      $('#content_load').fadeIn();
      $.post( 
        target,
        $('#'+formname).serialize(),
        function(data) {
          $('#content_main').html(data);
    	  $('#content_load').fadeOut();
    	  SetEffects();
        }
      );
      return false;
    }
    Mit dem submitForm() kannst du aber keine Dateien übertragen. Also ein Bildupload wäre nicht möglich. Dazu habe ich noch keine Lösung, alternative wäre aber ein iframe der den Dateiupload handelt.

    Liebe Grüße

    BJ01090

    Kommentar


    • #3
      Hey danke schön, also würde das mit der Loadcontent funktion gehen?

      Ich will eigentlich nur die PHP-Seite in einem DIV-Content direkt laden und darin die gleichen Möglichkeiten haben wie wenn ich Sie so aufrufe.

      Gruß kami

      Kommentar


      • #4
        Hi,

        ich habe mal deinen Quellcode ausprobiert, und angepasst. Leider stürzt das Script aber immer noch jedes mal ab wenn ich meinen new tcal aufruf mache.

        Vielleicht hast du nochmal etwas mehr Quellcode für mich. Oder einen Tipp.

        Gruß kami

        Kommentar


        • #5
          Hallo Kami,

          der Code ist so schlank mehr Code benutze ich auch nicht vielleicht par Effekte oder Buttons, Slider usw. ist aber nicht für die Sache relevant.

          Was meinst du mit das Skript stürzt ab?

          Sofern ich mich nicht irre kann man, wenn man code extern lädt und ihn dann in einem Div plaziert, keine Script-Tags ausführen.

          Ich weis ja nicht was du vor hast aber wie wäre es mit einem 2ten Parameter bei loadContent wo du definieren kannst welche Funktionen nach dem Ajax-Request ausgeführt werden sollen.

          Gruß

          BJ01090

          Kommentar

          Lädt...
          X