<CFContent type = text/x-javascript>和Ajax

tig*_*zle 1 ajax coldfusion content-type cfc

我在CFC文件上使用Ajax.我无法从我从Ajax调用的函数中获得结果.我设置了一个调试消息(Alert()),但是看不到它.有什么建议吗?

function getDelegateChartAcct(LocFund){
   alert("#Arguments.PIUniversalID#");
   alert($F("DelegateFund"));                                                                                                                                                                                                                    

  new Ajax.Request( "?method=displayDelegateChartAcct",
            {
              parameters : {
                            PIUniversalID: "#Arguments.PIUniversalID#",
                            PILocFund: $F("DelegateFund")                                                                                
                            },
                            method : "post"
                             }
               );
     }

     <cffunction name="displayDelegateChartAcct" access="remote" output="true" 
      returntype="void">
          <CFArgument name="PIUniversalID" type="string" required="true" />
          <CFArgument name="LocFund" required="true" type="String" />

      <CFSET var chartacctlist = runChartAcctDelegationQuery 
                  (#Arguments.PIUniversalID#, #Arguments.LocFund#)>

        <CFContent type="text/x-javascript">               
          alert(“Hi”);     
          //      delegateChartAcctList();
          //      $("DelegateChartAcct").
           //     <CFOutput query="chartacctlist">           
            //     $("DelegateChartAcct").insert( new Element(
                    "option", { value : "#JSStringFormat( chart_acct )#", selected : 
            //        "selected" } ).update( "#JSStringFormat( chart_acct )#" ) );                                                        
            //                            </CFOutput>


            </cffunction>   
Run Code Online (Sandbox Code Playgroud)

谢谢,Kefang

Sco*_*roz 7

您没有从CFC返回任何内容(并且您无法在远程调用的函数内运行JavaScript).

您有两种方法可以处理:

  1. 通过远程调用构建所需表单(或元素)的.cfm文件来加载所需的表单(或元素).您可以使用$("{place form will display}").load("{url to .cfm page}") jQuery将发出HTTP请求,并将结果加载到与选择器匹配的DOM元素中.

  2. 更改CFC以返回查询并使用JavsScript填充客户端上的选择框.(这就是我要做的)

您的代码如下所示:

<cffunction name="displayDelegateChartAcct" access="remote" output="true" returntype="query">
      <cfargument name="PIUniversalID" type="string" required="true" />
      <cafrgument name="LocFund" required="true" type="String" />

  <cfset var chartacctlist = runChartAcctDelegationQuery (#Arguments.PIUniversalID#, #Arguments.LocFund#)>
    <cfreturn chartacctlist />
</cfcomponent>
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用以下内容加载该数据(基于语法看起来像Prototype):

new Ajax.Request( "?method=displayDelegateChartAcct&returnFormat=json",
    {
        parameters : {
            PIUniversalID: "#Arguments.PIUniversalID#",
            PILocFund: $F("DelegateFund")                                                                                
        },
        method : "post",
        onSuccess: function(response) {
                // code in here will populate select
        }
     }
 );
Run Code Online (Sandbox Code Playgroud)

'returnFormat = json'告诉ColdFusion将结果作为JSON返回.

您只需要一个JS处理程序来获取该数据并使用它来填充SELECT框.