[gelöst][JS] Per AJAX Value einer TextArea ändern

Stex

Zeta Sagittarii
ID: 54415
L
11 Mai 2006
937
185
Hi,

ich habe im moment ein kleines Problem:
Ich möchte gern über einen Link per AJAX den Inhalt einer Textarea ändern. Dieser neue Wert wird aus deinem Textfile gelesen.

Das funktioniert soweit auch gut, allerdings besteht das Problem darin, dass dieser neue Wert auch Javascript-Code enthalten kann, der nicht in der Textarea erscheint, wenn ich das ganze über Element.update (prototype) mache, wird der Javascript-Code im Wert ausgeführt und erscheint nicht in der Textarea.

Wenn ich es über $('element').innerHTML mache, muss ich \n und \r entfernen, was nicht unbedingt zur Lesbarkeit beiträgt.

Ich bin nicht unbedingt ein Javascript-Profi, es gibt sicher eine einfache Möglichkeit, das hinzubekommen, aber ich habe sie halt nicht gefunden...

Vielen Dank schonmal im Voraus!
 
Zuletzt bearbeitet:
Wie kommt denn der Text in die Datei?

Ist es vllt. dabei möglich
Code:
< und >
in
Code:
< und >
zu ändern?
 
Hatte ich auch überlegt, aber da der Code gespeichert werden und später auch ausführbar sein soll, geht das nicht oder?
 
value sollte das richtige attribut sein.

Also mit
Code:
$('element').value = "Mein <b>Text</b>";
sollte es in allen Browsern funktionieren.
 
value sollte das richtige attribut sein.

Danke erstmal für die Antwort.

Klar, Value funktioniert auch, hat aber hier den gleichen Effekt wie innerHTML: Ich muss Zeilenumbrüche entfernen, was die Lesbarkeit kaputt macht.

Code:
$('element').value = 'ein bisschen text';
geht natürlich.
$('element').value = 'ein\n\rtext\n\rmit\n\rmehreren\n\rZeilen';
geht nicht, wenn ich die \n und \r nicht entferne... und das möchte ich ja nicht.
 
Hast du mal,
HTML:
 			 				$('element').value = "ein\n\rtext\n\rmit\n\rmehreren\n\rZeilen";

probiert? Also " statt ' ich weiß nicht wie das in JS ist, aber in php werden \n nur dann so ausgegeben wenn die in " stehen :think:
 
Prototype hat eine Option für den Ajax Request ob in dem Ergebnis ein Eval auf für Javascript gemacht werden soll oder nicht. Die Option heisst evalJS
 
geht nicht, wenn ich die \n und \r nicht entferne... und das möchte ich ja nicht.
Was bedeutet das denn nun genau, "geht nicht"?
Kommt eine Fehlermeldung?
Bei mir lokal funktioniert das (ohne prototype, aber ich denke an dem liegt es nicht).
Wenn du die Datei (den Inhalt als String) in einer Variable hast, kannst du diese doch dem textarea als value zuweisen. (innerHTML ist hier falsch, das wird vom Browser geparst und somit das js, und html-codes ausgewertet).
 
Prototype hat eine Option für den Ajax Request ob in dem Ergebnis ein Eval auf für Javascript gemacht werden soll oder nicht. Die Option heisst evalJS

Mensch, das könnte es direkt sein! Ich glaube, Rails setzt die automatisch auf true. Muss ich morgen direkt testen!

Edit:

Nein, das hat es nicht gebracht, aber ich habe jetzt trotzdem eine Lösung gefunden, auch wenn ich sie nicht 100%ig verstehe:

Ich gebe dem Ajax-Request als Response einfach nur den plain-text mit und mache in der onsuccess-methode folgendes:
Code:
$('element').value = unescape(request.responseText);
Damit geht's mit allen Zeilenumbrüchen/Sonderzeichen/whatever wunderbar.
 
Zuletzt bearbeitet: