2016-07-07 21 views
0

Wie übermittle ich ein ColdFusion-Abfrageobjekt über jQuery Ajax an meine cfc-Funktion? Ich mache einen Ajax-Aufruf, nachdem ich ein cfquery wie so laufen:Wie übergebe ich eine Abfrage über Jquery an eine cfc-Funktion?

<cfoutput query="data"> 
    <script type="text/javascript"> 
     $.ajax({ 
      url: '/test.cfc', 

      data:{ 
      q: #data#, //is this how i pass it? 
      method: "getData" 
      }, 
      success: function(data) { 
      console.log(data); 
      } 
     }); 
    </script> 
</cfoutput> 

Dies meiner Funktion zu übergeben scheint, aber ich bekomme einen CF Fehler, der sagt:

Complex object types cannot be converted to simple values.

Die Konsole sagt " unerwartetes Ende der Eingabe ". Wenn ich darauf klicke, es unterstreicht den q Ausdruck in meinem Ajax-Aufruf, mit dem Wert Wesen:

<!-- " ---></TD></TD></TD></TH></TH></TH></TR></TR></TR></TABLE></TABLE></TABLE></A></ABBREV></ACRONYM></ADDRESS></APPLET></AU></B></BANNER></BIG></BLINK></BLOCKQUOTE></BQ>......

Meine cfc-Funktion aufgerufen wird immer, und ich habe einen Streit mit dem gleichen Namen definiert.

Ich denke, meine Frage ist, was ich vermisse oder bin ich nicht die Frage richtig übergeben?

+0

Ist das möglich? – surgiie

+0

Warum versuchen Sie das zu tun? Normalerweise ist es umgekehrt. – Leigh

+0

... bedeutet "Schleife über die Datensätze in dieser Abfrage und geben Sie diesen Inhalt aus". Ich glaube nicht, dass Sie das tun müssen. Können Sie uns aktualisieren und uns mitteilen, was in Ihrem Präsentationscode passieren muss? Normalerweise würden Sie Ajax verwenden, um Daten vom Browser zu sammeln und an den Server zu senden. CFQUERY wird auf dem Server ausgeführt, so dass Sie die Ergebnisse einfach an jede andere CF-Funktion übergeben können, die Sie nach der Erstellung möchten, BEVOR Sie Daten an den Browser ausgeben. –

Antwort

-1

Ich glaube, Sie suchen nach der SerializeJSON-Funktion.

<cfoutput query="data"> 
    <script type="text/javascript"> 
     $.ajax({ 
      url: '/test.cfc', 

      data:{ 
      q: #SerializeJSON(data)#, //is this how i pass it? 
      method: "getData" 
      }, 
      success: function(data) { 
      console.log(data); 
      } 
     }); 
    </script> 
</cfoutput> 

Mehr: http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-79fa.html

+1

Während technisch möglich, eine Abfrage * zurück * auf den Server über Ajax ist falsch Ansatz für diese Aufgabe (siehe Kommentare unter der Frage). Die Arbeit sollte auf der Serverseite erfolgen. – Leigh

+0

okay, ich sehe, aber die serializeJSON() wird nicht meine Abfrage in der mehr Standard-JSON, die ich mit http://www.jquery-bootgrid.com/ verwenden können – surgiie

-1

Vielleicht noch etwas Handbuch benötigt? Ich musste dies tun, damit Dinge einmal funktionieren ...

<cfsavecontent variable="myOutput">{"QUERY":{"COLUMNS":["ID","BRANDID","CODE","ITEMNO","NAME","SIZE","UNIT","OUNCES","PRICE","DATETIME","USED"],"DATA":[<cfoutput query="parts" maxRows="#arguments.pageSize#">["#ID#","#BRANDID#","#CODE#","#ITEMNO#","#NAME#","#SIZE#","#UNIT#","#OUNCES#","#PRICE#","#datetime#",<cfif 
     used gte 1>"Yes"<cfelse>"No"</cfif>]<cfif (currentRow neq recordCount) and (currentRow mod arguments.pageSize neq 0)>,</cfif></cfoutput>]},<cfoutput>"TOTALROWCOUNT":#result_count.totalRecords#}</cfoutput></cfsavecontent>