2016-07-07 50 views
0

如何通過jQuery Ajax將ColdFusion查詢對象傳遞給我的cfc函數?我想提出一個Ajax調用我運行像這樣一個CFQUERY後:如何通過Jquery將查詢傳遞給cfc函數?

<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> 

這似乎傳遞給我的功能,但我得到的是說,一個CF錯誤:

Complex object types cannot be converted to simple values.

控制檯說:「意外的輸入結束「。當我點擊它, 凸顯了q表達我的Ajax調用,取值爲:

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

我的CFC功能獲取調用,我已經定義具有相同名稱的參數。

<cfargument name="q" type="query" required="true" /> 

我想我的問題是我錯過了什麼或者我沒有正確地傳遞查詢?

+0

這可能嗎? – surgiie

+0

你爲什麼要這麼做?通常情況下,這是相反的。 – Leigh

+0

...意味着,「遍歷此查詢中的記錄並輸出此內容」。我不認爲這就是你想要做的。你能否更新並告訴我們你的演示代碼中需要發生什麼?您通常會使用Ajax從瀏覽器收集數據並將其發送到服務器。 CFQUERY在服務器上運行,因此在將數據輸出到瀏覽器之前,您可以將結果傳遞給創建後所需的任何其他CF函數。 –

回答

-1

我相信你正在尋找SerializeJSON函數。

<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> 

更多:http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-79fa.html也許需要

+1

儘管技術上可行,但通過ajax將查詢*返回*傳遞到服務器是錯誤的這個任務的方法(見問題下方的評論)。這項工作應該在服務器端完成。 – Leigh

+0

好吧,我看到了,但serializeJSON()不會返回我的查詢中更標準的JSON,我可以使用http://www.jquery-bootgrid.com/ – surgiie

-1

更多的東西手冊?我不得不這樣做的東西工作一次...

<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>