Probleme mit FCKEditor und Ajax Nachladen von Inhalt

dragon001

Grünschnabel
Bin gerade dabei meinen User Bereich aufzubauen.
Als Basis für die Daten wird PHP Verwendet.
An Ajax Scripten kommt dies hier zum Einsatz:
(Achtung Smarty Template!)
HTML:
{literal}
<script language="javascript" type="text/javascript">// Request senden
	var xmlhttp;
	function setRequest() {
		// Request erzeugen
		
		if (window.XMLHttpRequest) {
			xmlhttp = new XMLHttpRequest(); // Mozilla, Safari, Opera
		} else if (window.ActiveXObject) {
			try {
				xmlhttp = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
			} catch (e) {
				try {
					xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
				} catch (e) {}
			}
		}
	
		// überprüfen, ob Request erzeugt wurde
		if (!xmlhttp) {
			{/literal}
			document.write("<meta http-equiv=''refresh'' content='0,{$noneAjax}' />");
			{literal}
		}
	}
	setRequest();
	function reload(page,div2use){
		scroll(0,0);
		xmlhttp.onreadystatechange = function(){
	 		//Check page is completed and there were no problems.
	        if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
	        //Write data returned to page
	        	document.getElementById(div2use).innerHTML = xmlhttp.responseText;
	   		}
	   }
	   xmlhttp.open("GET", page);
	   xmlhttp.send(null);
	}
	function store_signature(page,div2use){
	  xmlhttp.open('POST', page, true);
	  var poststr = "signature=" + encodeURI( document.getElementById("signature").value );
	  xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	  xmlhttp.send(poststr);
		xmlhttp.onreadystatechange = function(){
	        if (xmlhttp.readyState == 4){
	                var text = xmlhttp.responseText;
	                document.getElementById(div2use).innerHTML = text;
	            }
	    }
	}
</script>
{/literal}

So mein Problem ist ein für Java Scripter wahrscheinlich recht einfaches Problem.
Im moment möchte ich in meiner Einstellungsseite folgendes Formular via der Javascript Funktion reload nachladen.
Klicken auf den entsprechenden Link funktioniert.
Das Formular wird angezeigt.
Das einzige was Fehlt ist der FCK Editor.
Aber hier erstmal das Formular:
HTML:
<script language="javascript" type="text/javascript" src="{$javasource}fckeditor.js"></script>
<form action="{$form_url}" method="post" target="_self" id="{$formid}" >
  <h3>
  	{$formEdit}
  </h3>
  <br />
  <h5>
  	{$signature}
  </h5>
  <br />      
  {literal}
  <script language="javascript" type="text/javascript">
      window.onload = function()
    {
        var internal = new FCKeditor("signature");
        internal.ToolbarSet = "Basic";
        {/literal}internal.BasePath = "{$javascriptSoutce}fckeditor/" ;{literal}
        internal.ReplaceTextarea();
    }
  </script>
  {/literal}
  <textarea name="signature" id="signature" style="width:100%; height:400px;" >{$sig}</textarea>
  <br />
  	<input type="submit" name="submit" value="{$submitForm}" style="width:75%; text-align:center;" />
</form>

Fehlermeldungen werden keine ausgespuckt.
Wenn ich die Seite über spezielle Parameter aufrufe, (nicht via Ajax reload, sondern direkt Aufgerufen) seh ich FCK Editor schon.
Das verwirrt mich.
Hof ihr könnt mir helfen.
MFG
Chris
 
Zuletzt bearbeitet:
So,
konnte jetzt das Problem weiter einschränken.
Der Editor wird via Javascript von der Nachgeladnene Seite eingebunden.
Problem ist, das dieser nicht ausgeführt wird.
:confused:
steh jetzt an nem Punkt wo ich nimmer weiter weiß.
Problem ist, das ich geziehlt JavaScript Nachladen wollte um gewisse Funktionen geziehlt einzusetzen.
Beispielsweise FCKEditor für Textareas (die gibts nur in 2 Formularen) oder Passwort Überprüfung, Formular Eingabe prüfen.

Auch würde ich gern den Ajax Code zum übermitteln der Formular Daten via Nachgeladenen Code realisieren.

Hab mal nachgegooglet.
Hat mir aber nix geholfen.

Modification der Reload Funktion bringt nur Fehlermeldungen
HTML:
	function reload(page,div2use){
		scroll(0,0);
		xmlhttp.onreadystatechange = function(){
	 		//Check page is completed and there were no problems.
	        if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
	        //Write data returned to page
	        	document.getElementById(div2use).innerHTML = eval(xmlhttp.responseText);
	   		}
	   }
	   xmlhttp.open("GET", page);
	   xmlhttp.send(null);
	}
bringt nur die Fehlermeldung: das "beim Div fehlt?
Bin noch mehr Verwirrt als vorher.

:eek::confused:
 
Ist mir inzwischen aufgefallen.
Problem ist nur,
wie verpacke ich das ganze, das Javascript und HTML getrennt verarbeitet werden?

Json wär ne möglichkeit, jedoch hab ich das aufm Server nicht verfügbar.
Muß mal bei phpclasses.org schauen, vielleicht gibts da ne Class die mir das abnimmt.
;)
Meld mich, wenn ich was gefunden hab.
Danke schonmal im Vorraus.

Ok
kleines Addon:

Danke für die Hilfe von weiter oben.
Hier mal die Updates:

So erstmal die Funktion die die Daten in Json umwandelt:

PHP:
public function return_json($html,$js=''){
            return json_encode(array('HtmlOutputText'=>$html,'JavaScriptCode'=>$js));
        }

Diese Funktion wird durch die Template Engine und den Control Korrekt gefüllt.

Hier die Änderungen in der Reload Funktion:
HTML:
function reload(page,div2use){
		scroll(0,0);
		xmlhttp.onreadystatechange = function(){
	 		//Check page is completed and there were no problems.
	        if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
	        //Write data returned to page
                var jsonObject = eval("(" + xmlhttp.responseText + ")");
                eval(jsonObject.JS);
	        	document.getElementById(div2use).innerHTML = jsonObject.HTML;
	   		}
	   }
	   xmlhttp.open("GET", page);
	   xmlhttp.send(null);
	}

Irgendwo häng ich im Moment.
Fehlerausbage ist:
invalid label
("Html_Output":".........
Problempfeil zeigt auf H

Hof ihr könnt mir helfen
;)

P.S.: Json ist doh verfügbar ^^
 
Fehler Lag ein wenig versteckt:

HTML:
eval("(" + xmlhttp.responseText + ")");

sollte so ausschauen:

HTML:
eval( "(" + xmlhttp.responseText + ")" );

Aubacke JavaScript ist aber Fehleranfällig ^^

Werd den Thread erstmal zu machen,
da soweit alles funktioniert
Danke an die Mitleser
^^
 
Zurück