2012-04-10 3 views
1

Ich bekomme einen Fehler 500, wenn ich versuche, eine Methode in einem cfc aufzurufen. Da ich keine Debugging-Informationen bekomme, muss ich herausfinden, was passiert. Ich habe mir die Protokolle angeschaut, und nichts deutet darauf hin, was vor sich geht. Ich bin mit jquery .ajax die cfc nennen POST500 Fehler in cfc

Hier mit der Jquery:

$("#edit_button").click(function(){ 
    if(theArray.length > 0){ 
     theJson = JSON.stringify(theArray); 
    } 
    $.ajax({type:"POST", 
      url: "/CFCs/fund_profile.cfc?method=updateProfile", 
      data:theJson, 
      dataType:"json", 
      success:(function(response){ 
       var content = '' 
       response = JSON.parse(response);  
       alert("the response is" + response); 
     }); 
    });  
}); 

Das die Methode in der cfc ist ziemlich einfach jetzt:

<cffuntion name="updateProfile" access="public" returnFormat="json"> 
    <cfargument name="theJson"> 
    <cfif isJson(theJson)> 
     <cfset var theArray = deserializeJson(theJson)> 
     <cfset var passingJson = serializeJson(theArray)> 
    </cfif> 
    <cfreturn passingJson> 

Hier ist die Stapelspur:

500 

javax.servlet.ServletException 
    at coldfusion.xml.rpc.CFCServlet.invoke(CFCServlet.java:154) 
    at coldfusion.xml.rpc.CFCServlet.doPost(CFCServlet.java:289) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) 
    at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) 
    at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) 
    at jrun.servlet.FilterChain.doFilter(FilterChain.java:86) 
    at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42) 
    at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46) 
    at jrun.servlet.FilterChain.doFilter(FilterChain.java:94) 
    at jrun.servlet.FilterChain.service(FilterChain.java:101) 
    at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106) 
    at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42) 
    at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286) 
    at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543) 
    at jrun.servlet.http.WebService.invokeRunnable(WebService.java:172) 
    at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:320) 
    at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428) 
    at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:266) 
    at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66) 

Ich bin ratlos, und ohne irgendwelche echten Debugging-Informationen weiterzumachen, stecke ich fest. Irgendwelche Ideen?

Antwort

4

Das Zugriffsattribut Ihrer CFC-Methode muss für Ajax-Aufrufe (oder von einem Dienst einer Flex-App) entfernt sein. Im Wesentlichen ist die fragliche Methode nicht verfügbar, wenn der Zugriff auf Remote festgelegt ist, wenn dieser Aufruf erfolgt.

Versuchen:

<cffunction name="updateProfile" access="remote" returnFormat="json"> 
    ... 
</cffunction> 
+1

Ich habe versucht, dass, bevor man das war das Problem, und ich bin immer noch die gleichen Fehler. –

+1

Ok. Es muss jedoch entfernt sein :). Haben Sie versucht, den Aufruf $ .getJSON (http://api.jquery.com/jQuery.getJSON/) von jQuery (gegenüber $ .ajax) zu verwenden: $ .getJSON ("/ url/or/Pfad/zu/Ihrer /cfc.cfc ", { Methode: 'update_profile', theJSON: yourdata, Rückgabewert: 'json' }, Funktion (Daten) {Alarm (Daten);}); –

+0

Ich habe nicht. Ich werde es versuchen. Ich bin ziemlich neu in jQuery, also ist das alles Versuch und Irrtum (mehr Fehler, als ich zugeben möchte :)). –