2016-07-07 2 views
0

Как передать объект запроса ColdFusion на мою функцию cfc через jQuery Ajax? Я делаю вызов Ajax после я бегу cfquery так:Как передать запрос функции cfc через JQuery?

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

Моя функция КФК вызывался и я определил аргумент с тем же именем.

<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> 
Смежные вопросы