JavaScript variable zu ColdFusion-variable
Ich habe eine knifflige Sache.
Durch eine <cfoutput query="…">
Liste ich einige Datensätze in der Seite, die aus einer SQL Server-Datenbank.
Ende jeder Zeile anzeigen ich versuchen, fügen Sie diese in einem Datensatz in einer MySQL-Datenbank.
Wie Sie sehen, ist einfach, denn ich kann die genauen Variablen aus dem output-Abfrage in meine neue INSERT INTO-Anweisung.
ABER: die rsPick.name
kommt aus einer Datenbank mit einem anderen Zeichensatz und der einzige Weg, um es direkt in meine neue Datenbank zu Lesen ist, es von der web-Seite und nicht aus dem Wert, der kam in der Ausgabe der Abfrage.
Also ich lese diesen Wert mit diesem kleinen JavaScript, das ich gemacht und steckte es in die myValue
variable und dann will ich ColdFusion zu Lesen, dass die variable, um die es in meiner SQL-Anweisung.
<cfoutput query="rsPick">
<tr>
<td>#rsPick.ABBREVIATION#</td>
<td id="square"> #rsPick.name# </td>
<td>#rsPick.Composition#</td>
<td> Transaction done...
<script type="text/javascript">
var myvalue = document.getElementById("square").innerHTML
</script>
</td>
<cfquery datasource="#Request.Order#">
INSERT INTO products (iniid, abbreviation, clsid, cllid, dfsid, dflid, szsid, szlid, gross, retail, netvaluebc, composition, name)
VALUES ( #rsPick.ID#, '#rsPick.ABBREVIATION#', #rsPick.CLSID#, #rsPick.CLLID#, #rsPick.DFSID#, #rsPick.DFLID#, #rsPick.SZSID#, #rsPick.SZLID#, #rsPick.GROSSPRICE#, #rsPick.RETAILPRICE#, #rsPick.NETVALUEBC#, '#rsPick.COMPOSITION#','#MYVALUE#' )
</cfquery>
</tr>
</cfoutput>
InformationsquelleAutor | 2010-01-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
ColdFusion auf dem server verarbeitet wird, bevor die Seite serviert wird. JavaScript verarbeitet wird, die im browser nach der Seite serviert. Daher ist die einzige Möglichkeit für JavaScript, um zu dienen, einen Wert zu ColdFusion ist entweder:
a) stellen Sie die variable auf ein Formular-Feld und dann auf die Seite zurück an den server.
b) Senden Sie die variable auf den Coldfusion via Ajax.
Ich denke, es ist ein sicherer und zuverlässiger Weg, das zu tun, was Sie brauchen, ohne JavaScript. Können Sie uns mehr Informationen über die Daten, vielleicht sogar ein Beispiel?
Denken Sie daran, verwenden Sie das cfqueryparam-tag auf alle Variablen, die innerhalb cfquery.
InformationsquelleAutor Dan Sorensen
Wenn Sie die Seite erstellen möchten Sie wissen, was ist in der DOM-element "square", da Sie es dort. Wenn Sie dies tun, auf der Grundlage der dynamischen Eingabe des Benutzers ist, dann würden Sie brauchen, um eine CFAJAXPROXY oder einfach ein Formular post zu einer anderen Seite zu tun einfügen.
Auch es ist erschreckend zu nehmen ungeprüfte Eingaben von einem DOM und einfügen in eine Datenbank. Verwenden cfqueryparam zum Schutz vor injection-Angriffen.
InformationsquelleAutor jarofclay
Deine Fehleinschätzung beginnt mit diesem Gedanken:
Sorry, wenn das klingt hart jetzt, aber das ist kompletter Unsinn. Vergessen Sie diese Idee. Es ist weder möglich eine JavaScript variable von ColdFusion die Art und Weise, Sie versuchen es, noch ist es sogar notwendig.
Für den Anfang, ich bin mir nicht sicher, warum es sein muss, über ColdFusion, dass Sie Werte aus einer Datenbank in eine andere. Datenbank-Server sind durchaus in der Lage, direkt miteinander kommunizieren, zum Beispiel über die "Linked Server" - Funktion im MS SQL-Server (siehe diese Anleitung).
Wenn es sein muß, ColdFusion, versuchen Sie dies:
Solange die Tabelle Datentypen und Datenbank-verbindungen zu Datenbanken sind richtig eingerichtet, ColdFusion behandelt die Zeichenkodierung transparent. Beachten Sie, dass die Ziel-DB-Felder sollten nicht "weniger fähig" als die source-Bereiche, z.B. die Quelle sollte nicht sein, Unicode, wenn das Ziel ist US-ASCII.
Also da kann ich nicht verwenden, bildet diese Arbeit zu tun ( mehrere Datensätze ) dachte ich nimm den Wert von einem text auf dem Bildschirm und bekommt es in einem CF-variable. Danke nochmal
InformationsquelleAutor Tomalak
Nun, deine Frage ist wirklich: Wie mache ich einen string von einer Zeichenkodierung zu einer anderen in ColdFusion?
Können, verwenden Sie den NVARCHAR-Datentyp in SQL Server (nicht sicher, was das gleiche in MySQL ist) - und speichern nur die Zeichen, die Daten als UTF8?
Auch, Java ist perfekt geeignet für den Umgang mit den verschiedenen Codierungen und bietet sogar Hilfe bei der String Klasse und die CharsetDecoder Klasse für den Umgang mit unterschiedlichen Kodierungen:
ColdFusion hat nur eine sehr eingeschränkte Unterstützung für den Umgang mit mehrere Zeichensätze in einer einzigen Anfrage. Sie sind fast sicher gehen zu müssen, verlassen Sie sich auf die zugrunde liegenden Java-Klassen um dieses problem zu lösen innerhalb von ColdFusion.
InformationsquelleAutor Goyuix
Also, wenn Sie wollen, zu konvertieren JS-Wert von CFM, fühle ich mich ein paar Schritte tun müssen:
zunächst ordnen Sie Ihre JS-Wert in der Eingabe über javascript. danach abrufen Wert von dieser Eingabe durch Absenden.
InformationsquelleAutor PPShein
Verwenden JSString zu konvertieren, Javascript variable zu CFML-Variablen.
toScript
Funktion nicht umwandeln, JavaScript, CFML. Es gibt eine CF-variable als voll entgangen/geprüfte Zeichenkette in JavaScript verwendet. Es offenbar auch gehört das Semikolon als Teil der Ausgabe-wie bereits im doc-Kommentare. help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/...InformationsquelleAutor PPShein