Tek düzeyli bir yapıyı bir URL'de kullanmak için bir dize olarak serileştirmenin basit bir yolu var mı?Coldfusion: bir yapıyı bir dize olarak iletme URL'si aracılığıyla geçirme
?key1=val1&key2=val2
Tek düzeyli bir yapıyı bir URL'de kullanmak için bir dize olarak serileştirmenin basit bir yolu var mı?Coldfusion: bir yapıyı bir dize olarak iletme URL'si aracılığıyla geçirme
?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>
Nasıl görünür: Örneğin
?
<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#" />
oldukça güzel aslında :) – Daniel
ayrıca liste fonksiyonları (tmpStruct anahtarın) { \t myurl = listAppend (myurl, anahtar & "=" & URLEncodedFormat (tmpStruct için 'yani kullanabilirsiniz unutmayın [anahtar]), "&"); \t" Her iki çalışma da, json yaklaşımı benim için tembel programcıya hitap etse de;) – Leigh
Çözümüm hakkında söyleyebileceğim tek şey, daha da karmaşık yapılarla çalışmasıdır. Paul benden daha hızlı bir şekilde yazıyor: D – BKK
Bu çözümü düşündüm de, karmaşık yapılarla başa çıkabileceğinden daha sağlamdır. ou her zaman json her alıcı sayfada json deserialize zorunda var ben bu örnekte çok benzer bir şey yaptı ama form yoluyla: http://stackoverflow.com/questions/10392604/coldfusion-serializejson-example/10392839#10392839 – Paul
Büyük cevap, Ben! –