【问题标题】:How to display return value of ColdFusion function using jQuery or AJAX如何使用 jQuery 或 AJAX 显示 ColdFusion 函数的返回值
【发布时间】:2020-07-29 20:24:14
【问题描述】:

我正在使用如下所示的 ColdFusion 功能:

<cffunction name="getdata" access="remote" output="true" returntype="string">
    <cfargument name="x" type="string" required="true">
    <cfargument name="y" type="string" required="true">
    <cfquery name="getval" datasource="#application.datasource#" result="result">
    select val from table where col1=#arguments.x# and col2=#arguments.y#
    </cfquery>

    <cfset p= #getval.val#>
    <cfreturn p>
</cffunction>

我希望在警报中打印val 的值。当用户在自动完成下拉菜单中选择其中一个值时,显示的警报应为“请验证它是否为 val”。

我怎样才能做到这一点?

我尝试在自动完成的 select 事件中使用 jQuery AJAX,这里 xy 是表单上输入字段的名称:

 select: function(event, ui) {
     $.ajax({
            type: "GET",
            url: 'somepathtofunction?method=getdata&x='+ x + '&y'+ y,
            async: true,
            success: function(result) {
                alert('please verify whether it is' + result.val  );
            }
     });
}             

另外,尝试了下面的代码:

alert('please verify whether it is'  +  $.get('somepathtofunction?method=getdata&x='+ x + '&y'+ y));

但这些都不起作用。

我是 jQuery AJAX 和 ColdFusion 的新手,所以我知道我编写了大部分错误的代码。请在我错的地方纠正我。

【问题讨论】:

  • 与您的问题无关,但在 ColdFusion 函数中,通常希望将 ColdFusion 变量保留在函数内。这可以使用var 关键字或使用本地范围来完成。
  • 更不用说使用&lt;cfqueryparam&gt;,尤其是在处理来自请求的变量时。

标签: javascript jquery ajax coldfusion coldfusion-10


【解决方案1】:

使用 AJAX 调用,您走在了正确的道路上。有很多方法可以实现这一目标。我找到了让 CF 和 JS 都使用 JSON 表示法的最简单方法之一。您的 CF 函数应设置为 output=true 并使用 #serializeJSON()# 函数返回数据。

需要注意的一个“问题”是 CF 在默认情况下始终将 JSON 数据大写,因此您必须在区分大小写的 JS 代码中使用返回变量的全大写版本。

这里有一些尝试:

<cffunction name="getdata" access="remote" output="true">
    <cfargument name="x" type="string" required="true">
    <cfargument name="y" type="string" required="true">
    <cfquery name="getval" datasource="#application.datasource#" result="result">
    select val from table where col1=#arguments.x# and col2=#arguments.y#
    </cfquery>
    <cfoutput>#serializeJSON({val=getval.val})#</cfoutput>
</cffunction>




  $.ajax({
        method: "GET",
        url: "yourCFCpathhere.cfc",
        data:{
            method: "getdata",
            x: var1,
            y: var2
        },
        dataType: "json"
    }).done(function( result ) {
        alert('please verify whether it is' + result.VAL  ); //CAPS for the return var from CF
    });
});

【讨论】:

  • 为什么要输出数据而不是用cfreturn标签返回。
  • 为什么使用 result="result"?这些论点需要在&lt;cfqueryparam&gt;
  • 该代码仍然有效。非常感谢@P Mascari。不使用 result="result" 怎么办?以及如何使用 cfreturn @JamesA Mohler 返回它?我可能听起来很愚蠢,但请解释一下我对此真的很陌生。
  • 谢谢@Dan Bracuk。此外,我在表单上有两个输入字段,用户可以从自动建议下拉列表中选择选项。我想将用户在运行时选择的值传递给 x 和 y。我通过执行 x="abc" 来做到这一点,但我不想要那样。我想要 x= "输入文本框中的值"。
  • 此链接显示了一种使用 cfreturn 标记将 json 数据传回 javascript stackoverflow.com/questions/40406253/… 的方法。此链接显示如何将表单值传递给 javascript - stackoverflow.com/questions/3547035/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-30
  • 1970-01-01
相关资源
最近更新 更多