Solved

I am having problems with cfajaxproxy/railo

Posted on 2013-05-24
6
580 Views
Last Modified: 2013-08-20
I am having problems with using cfajaxproxy with railo, where by calling some of my remote functions will result in a JSONParse error being thrown in the browser. I have managed to identify which functions execute successfully and which fail and it appears to be due to the types of the parameters. Simple types such as strings and booleans work fine, i.e:

<CFFUNCTION name="activate" access="remote" output="no">
      <CFARGUMENT name="webpageId" type="string" required="yes">
      <CFARGUMENT name="isActive" type="boolean" required="yes">


However, any function which requests a struct or array as a parameter, i.e:

<CFFUNCTION name="activate" access="remote" output="no">
      <CFARGUMENT name="webpageId" type="struct" required="yes">


will result in the JSONParse error described. The same function works perfectly using CF9, but when run in the railo environment it throws that error. Does any one have any ideas as to what might be causing this? .. or suggest anything to try?

Many thanks!
0
Comment
Question by:paddycobbett
  • 3
  • 3
6 Comments
 
LVL 52

Expert Comment

by:_agx_
ID: 39202253
We'd need to see more code. Can you post a small demo example that produces the error?

What version of Railo?
0
 
LVL 1

Author Comment

by:paddycobbett
ID: 39204143
Sure, the following code runs successfully in a CF environment, yet fails in the Railo environment.  Do you have any idea why this could be?  Is is related to an environment setup issue? Could you try this is your railo environment (assuming you have one set up) and see if it works? That would eliminate it being a code issue. Am running railo 4.0.4.001


<html>
<body>
<cfajaxproxy cfc="testcfc" jsclassname="testcfc" />
<script>

 var proxy=new testcfc();
 proxy.setCallbackHandler(function(response){
  alert('string test succeeded!');
 });
 proxy.testWithString('teststring'); // succeeds
 
 proxy=new testcfc();
 proxy.setCallbackHandler(function(response){
  alert('struct test succeeded!');
 });
 proxy.testWithStruct({ struct: 'structval' }); // fails
</script>

</body>
</html>


### test.cfc

<CFCOMPONENT>

 <CFFUNCTION name="testWithString" access="remote" returnFormat="json" output="no">
  <CFARGUMENT name="stringParam" type="string" required="yes">
 
 </CFFUNCTION>
 
 <CFFUNCTION name="testWithStruct" access="remote" returnFormat="json" output="no">
  <CFARGUMENT name="structParam" type="struct" required="yes">
 
 </CFFUNCTION>

</CFCOMPONENT>
0
 
LVL 52

Accepted Solution

by:
_agx_ earned 500 total points
ID: 39206579
Interesting.  The FF debugger shows it's using the structure param as the "argumentCollection".  So what's actually passed to the function is a parameter named "struct" with a value of "structval" .  

http://localhost/testcfc.cfc?method=testWithStruct&returnFormat=json&argumentCollection={%22struct%22:%22structval%22}


For it to work, I think you need to do something like this instead:

       proxy.testWithStruct( {structParam:   { struct: 'structval' }  });
0
What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

 
LVL 1

Author Closing Comment

by:paddycobbett
ID: 39209509
Worked like a charm! thanks and good insight!
0
 
LVL 52

Expert Comment

by:_agx_
ID: 39209676
You're welcome (..and I learned something new too !)
0
 
LVL 1

Author Comment

by:paddycobbett
ID: 39425909
Hi, I know this is an old question but had a quick follow up which is not easily posed as a separate question. Since railo handles the ajax parameters differently, is there an obvious way in which I can call the ajax function that is compatible for both railo and non-railo? Just wanted to check before I adjust my calls for railo which will break if it's not run in the railo environment. I wish I could award follow up points :(
0

Featured Post

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

Suggested Solutions

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 …
Sometimes databases have MILLIONS of records and we need a way to quickly query that table to return the results me need. Sure you could use CFQUERY but it takes too long when there are millions of records. That is why SOLR was invented. Please …
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…

747 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

13 Experts available now in Live!

Get 1:1 Help Now