尝试将查询结果传递给jquery autocomplete的源属性时,我遇到了一个问题......
<cfloop query="MyQuery">
<cfset head=#ValueList(MyQuery.pname,",")#>
<cfset head1=#listtoarray(head)#>
</cfloop>
这里我想将head1数组发送到jquery代码, Jquery自动完成代码如下..
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.10.0/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css" />
<script>
$(function() {
var availableTags = head1;
$("#k").autocomplete({
source:availableTags
});
});
</script>
</cfif>
如何将head1传递给availableTags
答案 0 :(得分:3)
首先,
你的cfloop除了反复运行valuelist
和listtoarray
以及相同的结果外什么都不做。把它放在查询循环中是没有意义的。查看有关valueList
您可以在CF中执行以下操作:
<cfset head=#ValueList(MyQuery.pname,",")#>
<cfset head1=#listtoarray(head)#>
ColdFusion有一个名为toScript的好函数
创建分配值的JavaScript或ActionScript表达式 ColdFusion变量的一个JavaScript或ActionScript变量。 这个函数可以转换ColdFusion字符串,数字,数组, 结构,以及对JavaScript或ActionScript语法的查询 定义等效变量和值。
要使用CF阵列创建JS阵列,您可以执行以下操作:
$(function() {
<cfoutput>var #ToScript(head1, "availableTags")#;</cfoutput>
$("#k").autocomplete({
source:availableTags
});
});
toScript的输出类似于
var availableTags = new Array();
availableTags[0] = "something";
availableTags[1] = "something else";
availableTags[2] = "another something";
availableTags[3] = "even more something";
答案 1 :(得分:0)
我用serializeJson解决了这个问题......你刚给了我另一个好方法......(toScript)...谢谢...... :)
$(function() {
<cfoutput>var states = <cfoutput>#serializeJson(head1)#</cfoutput> $("#k").autocomplete({
source:availableTags
});
});