【问题标题】:How to get return variable from coldfusion cfc page?如何从coldfusion cfc页面获取返回变量?
【发布时间】:2017-02-01 13:51:26
【问题描述】:

我有调用 .cfc pag 的函数。我正在传递方法和参数以及页面名称。这是我的代码:

function callFunction(name){
    param = name;

    location.href = 'myTest.cfc?method=getRecords&userName=' + param;
}

这是我在 cfc 页面上的 cffunction:

<cfcomponent>
    <cffunction name="getRecords" access="remote" returnformat="void">
        <cfargument name="userName" type="string" required="yes">

        <cfset myResult = "1">

        <cftry>
            <cfquery name="getResults" datasource="test">
                //myQuery
            </cfquery>

            <cfcatch>
                <cfoutput>#cfcatch#</cfoutput>
                <cfset myResult="0">
            </cfcatch>
        </cftry>
        <cfreturn myResult>
    </cffunction>
</cfcomponent>

在我调用我的函数后,我的代码没有给我返回变量。我不确定我的代码中缺少什么。如果有人可以帮助解决这个问题,请告诉我。

【问题讨论】:

  • 你有returnFormat="void"。 void 用于 returnType。 returnFormat 应该是 json、wddx 或 plain。
  • 是的,我需要获取结果,但在这种情况下我不能使用 Ajax。在这种情况下,还有其他方法可以处理响应吗?
  • 不能用ajax是什么意思。您显然可以控制 javascript。目前尚不清楚您要如何处理来自getRecords 的数据。您是否尝试将用户发送到页面?在页面上显示记录?根据用户名将用户发送到页面?在提供的代码中,您的函数不会调用 cfc 页面。
  • 只是为了检查我的结果是成功 = 1 还是警告错误如果它是 0。是的,我不能使用 ajax,因为这会导致我的代码中出现一些其他问题。我的 cffunction 中还包含其他内容。
  • 您的代码没有调用该页面。它只是将一个字符串分配给变量location.href。您是否有更多代码可以使这更有意义。如果您希望您的 javascript 知道该调用的结果是 1 还是 0,则必须调用幕后页面 AJAX。

标签: javascript coldfusion cffunction


【解决方案1】:

不确定我是否理解了这个问题,但您是否正在寻找这个...?

function callFunction(name) {
  var target = 'myTest.cfc?method=getRecords&userName=' + name;

  location.href = target;

  return target;
}

【讨论】:

  • 我试过你的代码,调用后仍然没有得到目标值。
  • 什么电话。呼叫发生在哪里浓缩咖啡?你能把你的代码贴在你“调用”函数的地方吗?
  • @Leeish 我没有使用 ajax 来调用我的函数,但在上面的函数中,我有 location.href 和指向我的函数并传递参数的方法。那么在这种情况下,是否有可能从函数结果中获得响应?我不能使用 Ajax,因为我在同一页面上具有电子表格功能,并且不能与 ajax 一起使用。谢谢。
  • 如果您不调用该页面,您将无法从该页面获得结果。调用该页面的唯一方法是使用 AJAX。
  • 我认为无论你想做什么,你都在你的头上,因为它没有任何意义。
【解决方案2】:

这就是您从myTest.cfc 组件中获取getRecords 的结果的方式。

var xhr = new XMLHttpRequest();
xhr.open('GET', 'myTest.cfc?method=getRecords&userName='+name);
xhr.send(null);

xhr.onreadystatechange = function () {
  var DONE = 4; // readyState 4 means the request is done.
  var OK = 200; // status 200 is a successful return.
  if (xhr.readyState === DONE) {
    if (xhr.status === OK) 
      var result = xhr.responseText; // 'This is the returned text.'
      //result will = 1 or 0.
    } else {
      console.log('Error: ' + xhr.status); // An error occurred during the request.
    }
  }
};

【讨论】:

  • 如果不使用异步调用,就无法将数据从您的 cfc 获取到您的 javascript 中。如您的示例中那样将 URL 分配给变量不会这样做。因此,您要么不了解 AJAX 的用途和用途,要么不显示所有代码,要么无法正确传达您正在尝试做的事情。
猜你喜欢
  • 2011-10-26
  • 1970-01-01
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多