Có cách đơn giản nào để tuần tự hóa cấu trúc một cấp dưới dạng chuỗi để sử dụng trong url không?Coldfusion: chuyển một cấu trúc dưới dạng Chuỗi thông qua url
ví dụ:
?key1=val1&key2=val2
Có cách đơn giản nào để tuần tự hóa cấu trúc một cấp dưới dạng chuỗi để sử dụng trong url không?Coldfusion: chuyển một cấu trúc dưới dạng Chuỗi thông qua url
ví dụ:
?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>
như thế nào này trông?
<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#" />
khá đẹp thực sự :) – Daniel
Đừng quên bạn có thể sử dụng cũng có chức năng danh sách tức là 'for (quan trọng trong tmpStruct) { \t myUrl = listAppend (myURL, phím & "=" & URLEncodedFormat (tmpStruct [key]), "&"); \t}'. Cả hai công việc, mặc dù cách tiếp cận json kháng cáo với lập trình lười biếng trong tôi;) – Leigh
Tôi đoán điều duy nhất tôi có thể nói về giải pháp của tôi là nó hoạt động với các cấu trúc phức tạp hơn. Paul loại nhanh hơn tôi: D – BKK
Tôi nghĩ về giải pháp này là tốt.Nó mạnh mẽ hơn như bạn đã đề cập có thể xử lý các cấu trúc phức tạp nhưng y ou luôn luôn phải deserializeJSON json trên mỗi trang nhận tôi đã làm một cái gì đó rất giống nhau trong ví dụ này, nhưng thông qua hình thức: http://stackoverflow.com/questions/10392604/coldfusion-serializejson-example/10392839#10392839 – Paul
Câu trả lời tuyệt vời, Ben! –