2012-06-15 11 views

cevap

19
<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> 
+0

Çö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

+0

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

+0

Büyük cevap, Ben! –

13

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#" /> 
+1

oldukça güzel aslında :) – Daniel

+4

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

İlgili konular