Wie kann ich das Parsen der JSON-Rückgabe Von ColdFusion-CFC?
Habe ich diese vereinfacht code für die einfache Erklärung.
Habe ich eine cfm Seite, wo der Benutzer klickt auf eine Zeile in der Tabelle und erhält eine ID. Ich möchte zu senden, die ID eines CFC-plans, führen Sie eine Abfrage gibt, und zum zurückgeben der Ergebnisse an die cfm-Seite.
Hier ist, was die JQuery aussieht.
$.ajax({
url: "test.cfc?method=testFunction",
data: {ID:123456},
success: function(response) {
$("#div1").html(response);
}
});
und hier ist, was der cfc aussieht.
<cfcomponent>
<cffunction name="testFunction" access="remote" returnType="query" returnFormat="JSON">
<cfquery name="testQuery" datasource="x">
Select ID, NAME
From Table
Where ID = '#url.ID#'
</cfquery>
<cfreturn testQuery>
</cffunction>
</cfcomponent>
BEARBEITEN - ALTERNATIVE FCKW-METHODE
<cffunction name="testFunction" access="remote">
<cfquery name="testQuery" datasource="x">
Select ID, NAME
From Table
Where ID = '#url.ID#'
</cfquery>
<cfset response = [] />
<cfoutput query="testQuery">
<cfset obj = {
"ID" = ID,
"NAME" = NAME
} />
<cfset arrayAppend(response, obj) />
</cfoutput>
<cfprocessingdirective suppresswhitespace="Yes">
<cfoutput>
#serializeJSON(response)#
</cfoutput>
</cfprocessingdirective>
<cfsetting enablecfoutputonly="No" showdebugoutput="No">
</cffunction>
Als Erfolg Funktion in der ajax-Aufruf oben zeigt, div1 wird aufgefüllt werden, mit der JSON-Antwort, die wie folgt aussieht.
{"COLUMNS":["ID","NAME"],"DATA":[[123456,"John"]]}
BEARBEITEN - ALTERNATIVE ANTWORT
[{"ID":123456,"NAME":"John"}]
Nun möchte ich in der Lage sein zu verwenden und die Ausgabe der Daten aus der JSON-Antwort irgendwo auf meiner Seite. Wie kann ich das tun? Ich habe eine harte Zeit zu verstehen, analysieren diese Daten.
Mein Hauptanliegen ist es, Daten aus dem array-format, so kann ich die Ausgabe in Formularfeldern in meine Seite.
Du musst angemeldet sein, um einen Kommentar abzugeben.
CF11: unterstützt, siehe
serialization.serializeQueryAs
im doc.CF10 oder unten: zurück
queryToArray(testQuery)
, vergessen Sie nicht zu var-scope IhretestQuery
Referenz: http://www.raymondcamden.com/index.cfm/2014/5/8/ColdFusion-11s-new-Struct-format-for-JSON-and-how-to-use-it-in-ColdFusion-10
ODER verwenden Sie alternativ: https://github.com/cutterbl/serializeCFJSON zu analysieren, die CF-Abfrage dataset auf der client-Seite mit Javascript.
code
[{"ID":123456,"NAME":"John"}]code
Meine Frage jedoch ist, was kann ich tun, dass die Daten auf der Seite, sobald ich es wieder bekommen? Meine Absicht ist es, füllen Sie die Formularfelder mit ihm. Gerade jetzt, in der success Funktion, ich hab nur die Anzeige in #div1 nur um sicher zu gehen ich erhalte es zurück. Ich weiß nur nicht, wie Sie ziehen Daten aus diesem array und verwenden Sie es in die Seite.Dachte ich, der beste Weg, dies zu tun.
Haben die cfc-Rückkehr werden die Ergebnisse der Abfrage mit Klammern und nicht nur ein array mit eckigen Klammern.
Den JQuery sieht wie folgt aus
(Zu lang für die Kommentare)
Ein paar Verbesserungen zu vereinfachen und zu verfestigen code
Keine Notwendigkeit für die
cfoutput
odercfsetting
und in der Funktion. Einfach nur wieder die raw-Struktur "wie Sie ist". Um automatisch konvertieren Sie die Antwort auf JSON, einfach fügen Sie die URL-parameter?returnformat=json
zu deinem ajax-AufrufHinzufügen
dataType: "json"
auf Ihren Anruf ajax und jQuery analysiert, die Antwort in ein JSON-Objekt automatischVergessen Sie nicht zu lokalisieren alle Funktion lokale Variablen mit
VAR
oderLOCAL
In der Regel, Sie wollen vermeiden, den Zugriff auf die
URL
Umfang direkt von innerhalb einer Funktion. Stattdessen definieren Sie die ID als argument. Dann VerweisARGUMENTS.ID
in der Abfrage stattURL.ID
jQuery
CFC: