0

尝试将查询结果传递给 jquery 自动完成的源属性时,我遇到了一个问题......

    <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

4

2 回答 2

3

首先,您的 cfloop 什么都不做,只是一遍又一遍地运行valuelistlisttoarray结果相同。将它放在查询循环中是没有意义的。查看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";
于 2013-02-07T11:38:16.157 回答
0

我使用 serializeJson 来解决问题..你刚刚给了我另一个好方法......(toScript)......谢谢...... :)

$(function() {
     <cfoutput>var states = <cfoutput>#serializeJson(head1)#</cfoutput>                                                                                             $("#k").autocomplete({
     source:availableTags
  });
  });
于 2013-02-12T09:54:31.103 回答