Gibt es eine einfache Möglichkeit, eine einstufige Struktur als Zeichenfolge für die Verwendung in einer URL serialisieren?Coldfusion: Übergeben einer Struktur als String durch URL
zum Beispiel:
?key1=val1&key2=val2
Gibt es eine einfache Möglichkeit, eine einstufige Struktur als Zeichenfolge für die Verwendung in einer URL serialisieren?Coldfusion: Übergeben einer Struktur als String durch URL
zum Beispiel:
?key1=val1&key2=val2
<cfscript>
// create simple struct
x = { a=1, b=2, c=3 };
WriteDump(x);
// serialize in JSON format and encode for URL transport
y = URLEncodedFormat(SerializeJSON(x));
WriteOutput('url: <a href="#SCRIPT_NAME#?z=#y#">#SCRIPT_NAME#?#y#</a>');
// now receive the URL variable and dump it
if (StructKeyExists(url, 'z')) {
writeOutput('<h3>URL Data:</h3>');
writeDump(DeserializeJSON(URLDecode(z)));
}
</cfscript>
Wie sieht das?
<cfset tmpStruct = {"firstItem" = "one", "secondItem" = "two"} />
<cfset myUrl = "http://domain.com/file.cfm?" />
<cfloop list="#structKeyList(tmpStruct)#" index="i" >
<cfset myUrl = myUrl & i & "=" & tmpStruct[i] & "&" />
</cfloop>
<cfset myUrl = left(myUrl,len(myUrl)-1) />
<cfdump var="#myUrl#" />
ganz nett eigentlich :) – Daniel
Vergessen Sie nicht, dass Sie auch dh Listenfunktionen verwenden können, 'für (Schlüssel in tmpStruct) { \t myURL = listAppend (myURL, Schlüssel & "=" & URLEncodedFormat (tmpStruct [key]), "&"); \t}. Beide funktionieren, obwohl die JSON-Ansatz an den faulen Programmierer in mir anspricht;) – Leigh
Ich denke, das einzige, was ich über meine Lösung sagen kann, ist, dass es mit noch komplexeren Strukturen funktioniert. Paul schreibt schneller als ich !: D – BKK
Ich habe auch über diese Lösung nachgedacht.Es ist robuster, wie Sie erwähnt haben, kann mit komplexen Strukturen umgehen, aber y ou immer DESERIALISEJSON der JSON auf jeder empfangenden Seite Ich tat etwas sehr ähnlich in diesem Beispiel, aber über das Formular: http://StackOverflow.com/Questions/10392604/coldfusion-serializejson-example/10392839#10392839 – Paul
Große Antwort, Ben! –