【发布时间】:2016-07-07 19:52:54
【问题描述】:
如何通过 jQuery Ajax 将 ColdFusion 查询对象传递给我的 cfc 函数?像这样运行 cfquery 后,我正在进行 ajax 调用:
<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 错误,上面写着:
复杂对象类型不能转换为简单值。
控制台显示“输入意外结束”。当我点击它时,
它在我的 ajax 调用中突出显示 q 表达式,其值为:
<!-- " ---></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" />
我想我的问题是我遗漏了什么或者我没有正确传递查询?
【问题讨论】:
-
你为什么要这样做?通常情况正好相反。
-
...意思是,“遍历这个查询中的记录并输出这个内容”。我不认为那是你要做的。你能更新并告诉我们你需要在你的演示代码中发生什么吗?您通常会使用 Ajax 从浏览器收集数据并将其发送到服务器。 CFQUERY 在服务器上运行,因此您可以在创建后将结果传递给您想要的任何其他 CF 函数,然后再将数据输出到浏览器。 -
将您传递的任何查询移动到 cfc 中的另一个方法。然后从您要生成 json 的地方调用该方法。
-
(编辑)@surgiie - 这一切都应该在服务器端完成。创建一个运行查询并根据需要格式化结果的函数。然后对该函数进行ajax调用。关于如何重新格式化查询结果的大量现有线程,例如 stackoverflow.com/questions/7814575/… stackoverflow.com/questions/14466754/… 。
-
FWIW,我有一个 GitHub 存储库,可以帮助将 ColdFusion 查询对象转换为更标准的 JSON 格式。 github.com/iknowkungfoo/cfquery-to-json
标签: jquery ajax coldfusion arguments