Solved

coldfusion variables

Posted on 2012-04-03
10
188 Views
Last Modified: 2012-04-10
I have a URL query parameter string that is:
?fq=object_type:"Graphic+arts"&rows%3D10&q%3Dcatlin%26
I want it to be
?fq=object_type:"Graphic+arts"&rows=10&q=catlin
Is there a way to do this without replacing text.
I tried URLDecode but it didn't work.
Thanks.
0
Comment
Question by:cbeverly
  • 5
  • 4
10 Comments
 
LVL 52

Expert Comment

by:_agx_
ID: 37801516
What result did you get? Because it works fine for me
0
 
LVL 2

Expert Comment

by:sumCold
ID: 37805822
Hey try using 'unescape()' javascript function.

You can also refer below link:

http://www.w3schools.com/jsref/jsref_unescape.asp
0
 

Author Comment

by:cbeverly
ID: 37807895
My problem is I have a list below that I want to loop through using comma as a delimiter which works fine until it gets to "Catlin,George" and then it thinks there are 2 separate entities instead of one. I want the list to be  separated out into 1. object_type 2. topic 3. name 4. place 5. onPhyscialExhibit and 6.culture  I don't know what else to use for a delimiter.
 object_type:"Paintings",topic:"Frontier",name:"Catlin, George",place:"United States",onPhysicalExhibit:"Yes",culture:"Indians of North America"
0
 
LVL 52

Expert Comment

by:_agx_
ID: 37812564
CF list functions accept other delimiters besides a comma. So if you're creating the original list, you could use any delimiter you want, like "|" or "~" or even non-printable characters.

YourString

object_type:"Paintings"|topic:"Frontier"|name:"Catlin, George"|place:"United States"|onPhysicalExhibit:"Yes"|culture:"Indians of North America"

Example
<cfset params = {}>
<cfloop list="#yourString#" index="elem" delimiters="|">
      <cfif listLen(elem, ":") eq 2>
            <cfset theName = listFirst(elem, ":")>
            <cfset theValue = replace(listLast(elem, ":"), '"', "", "all")>
            <cfset params[theName] = theValue>
      </cfif>
</cfloop>
<cfdump var="#params#">
0
 
LVL 52

Expert Comment

by:_agx_
ID: 37812597
Even simpler, format the list values as a JSON string:

ie YourString:
{"place":"United States","name":"Catlin, George","culture":"Indians of North America","object_type":"Paintings","topic":"Frontier","onPhysicalExhibit":true}

Then you can deserialize it into a CF structure with just:

             <cfset paramsAsStruct = deserializeJSON(yourString)>
0
DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

 

Author Comment

by:cbeverly
ID: 37824627
When I try #SerializeJson(url.fq)#
I am getting this below not the string you have. "place:\"United States\",name:\"Catlin, George\",culture:\"Indians of North America\","object_type:\"Paintings\",topic:\"Frontier\""
0
 
LVL 52

Expert Comment

by:_agx_
ID: 37824761
No assuming #url.fq# contains a json string, you want to DEserialize, not serialize. Deserializing will convert the json string back into a CF structure.

     <cfset paramsAsStruct = deserializeJSON( url.fq )>
0
 

Author Comment

by:cbeverly
ID: 37825040
When I try deserializeJSON(url.fq) I get this error message:

JSON parsing failure at character 1:'p' in place:"United States",culture:"Indians of North America",object_type:"Paintings"
0
 
LVL 52

Accepted Solution

by:
_agx_ earned 500 total points
ID: 37825122
It'll only work IF you changed the url string to pass a JSON string for the #url.fq# parameter. (It won't work with your original value because it's not a valid json string. )  If you are passing a json string, then make sure you urlencoded the value:

            ie   somePage.cfm?fq=#URLEncodedFormat(serializeJSON(someStruct))#"

If you can't change it to pass JSON, you'll have to use the 1st approach instead.
0
 

Author Closing Comment

by:cbeverly
ID: 37828469
Thank you for your help. I attacked the problem from a different approach so I am not going to use the code I posted.
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This is an updated version of a post made on my blog over 3 years ago. It is unfortunately, still very relevant as we continue to see both SQLi (SQL injection) and XSS (cross site scripting) attacks hitting some of the most recognizable website and …
I spent nearly three days trying to figure out how incorporate OAuth in Coldfusion for the Eventful API. Hopefully, this article will allow Coldfusion Programmers to buzz through the API when they need to. Basically, what this script does is authori…
Along with being a a promotional video for my three-day Annielytics Dashboard Seminor, this Micro Tutorial is an intro to Google Analytics API data.
This is used to tweak the memory usage for your computer, it is used for servers more so than workstations but just be careful editing registry settings as it may cause irreversible results. I hold no responsibility for anything you do to the regist…

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

26 Experts available now in Live!

Get 1:1 Help Now