SiobhanElara
asked on
Error outputting form data deserialized with wddx2cfml
I have the following code:
When I try to output the results with <cfoutput query="qFormData"> I get the error that "The value of the attribute query, which is currently qFormData, is invalid." If I do a cfdump of qFormData it looks like I'd expect, with the "column names" on the left and the corresponding data on the right.
According to the LiveDocs for cfwddx (at least for 8, which is what we're running) it appears that you can use the wddx2cfml results as a query. What am I doing wrong here? Thanks!
<cfsilent>
<cfquery datasource="#application.configBean.getDatasource()#" name="qFormDataRaw">
SELECT data FROM tformresponsepackets
WHERE responseid = <cfqueryparam value="#URL.responseID#" cfsqltype="cf_sql_varchar">
</cfquery>
<cfwddx
action = "wddx2cfml"
input = "#qFormDataRaw.data#"
output = "qFormData"
validate = "yes" >
</cfsilent>
When I try to output the results with <cfoutput query="qFormData"> I get the error that "The value of the attribute query, which is currently qFormData, is invalid." If I do a cfdump of qFormData it looks like I'd expect, with the "column names" on the left and the corresponding data on the right.
According to the LiveDocs for cfwddx (at least for 8, which is what we're running) it appears that you can use the wddx2cfml results as a query. What am I doing wrong here? Thanks!
ASKER
- What does qFormData.Data contain: a wddx string ?
Yes. It looks like this:
Yes. It looks something like the following:
HOMEPHONE | 555-555-5555
ADDRESS | 123 Main Street
CITY | Anytown
etc.
Yes. It looks like this:
<wddxPacket version='1.0'>
<header/>
<data>
<struct>
<var name='HOMEPHONE'><string>555-555-5555</string></var>
[more variables]
</struct>
</data>
</wddxPacket>
Does qFormData contain multiple rows?Yes. It looks something like the following:
HOMEPHONE | 555-555-5555
ADDRESS | 123 Main Street
CITY | Anytown
etc.
> Does qFormData contain multiple rows?c
I meant your query. ie
Row | Data
1 | <wddxPacket version='1.0'> ....
2 | <wddxPacket version='1.0'> ....
3 | <wddxPacket version='1.0'> ....
If each row contains a *separate* WDDXPacket, I don't think you can do it in a single line. You must loop through the query and call cfwddx on the packet in each row. Something like
ie
<cfloop query="qFormDataRaw">
<cfwddx
action = "wddx2cfml"
input = "#qFormDataRaw.data[curren tRow]#"
output = "qFormData"
validate = "yes" >
</cfloop>
I meant your query. ie
Row | Data
1 | <wddxPacket version='1.0'> ....
2 | <wddxPacket version='1.0'> ....
3 | <wddxPacket version='1.0'> ....
If each row contains a *separate* WDDXPacket, I don't think you can do it in a single line. You must loop through the query and call cfwddx on the packet in each row. Something like
ie
<cfloop query="qFormDataRaw">
<cfwddx
action = "wddx2cfml"
input = "#qFormDataRaw.data[curren
output = "qFormData"
validate = "yes" >
</cfloop>
ASKER
Oh, I'm sorry... I misunderstood your question. qFormDataRaw.Data (the input for the cfwddx tag) contains the packet. There is no qFormData.data variable; each row is a var name/string pair from the packet (and "data" is not one of the variables. Or am I misunderstanding the question still?)
ASKER
As a bit of additional information, I can dump a variable like qFormData.HOMEPHONE and it outputs the proper string.
(Edit) Sorry, I see it was a typo of mine that confused things! But I misread the problem anyway. Let me see if I can track down a CF8 machine to test something.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I'm away from my machine at the moment, but I'll try to do this when I get home. Thank you for your help!
ASKER
It turned out that the result could be accessed only as a structure, not a query. I have no idea why, but I'm giving you the points for all your help. :)
- Does qFormData contain multiple rows?