如何在 ColdFusion 中用 AJAX 替换 iframe

Posted

技术标签:

【中文标题】如何在 ColdFusion 中用 AJAX 替换 iframe【英文标题】:How to replace iframe with AJAX in ColdFusion 【发布时间】:2018-01-19 17:44:24 【问题描述】:

我正在使用 ColdFusion 代码,在我的代码中,我的代码是使用 ColdFusion 在表中构建的,我在其中设置变量并创建查询,然后我在 iframe 中传递该变量并打开我的通过 iframe 在我的 questionbuilder.cfm 页面中调用 question.cfm 的其他页面。如何替换我的代码并使用 AJAX 执行此操作,因为我必须删除 iframe 并使用 AJAX 和 Bootstrap?

<div class="greyborder mediumtext" style="height:expression(document.body.clientHeight-document.getElementById('topBar').scrollHeight-40)" id="divPaths">
  <cfset builderURL="#request.DomainProtocol##request.DomainURL##ChangeManagerHome#question.cfm?processid=#processid#&category=#category#" />
  <cfif isDefined("URL.pView")>
    <cfset builderURL = builderURL & "&pView=#URL.pView#" />
  </cfif>
  <cfif isDefined("mode") and (mode eq "Add" or mode eq "Edit")>
    <cfset builderURL = builderURL & "&mode=#mode#" />
  </cfif>
  <cfif isDefined("maxrows") and IsNumeric(maxrows) and maxrows gt 0>
    <cfset builderURL = builderURL & "&maxrows=#maxrows#" />
  </cfif>
  <cfif isDefined("pathID") and IsNumeric(pathID) and pathID gt 0>
    <cfset builderURL = builderURL & "&pathID=#pathID#" />
  </cfif>
  <cfif isDefined("qnID") and IsNumeric(qnID)>
    <cfset builderURL = builderURL & "&qnID=#qnID#" />
  </cfif>
  <cfif isDefined("pqn") and IsNumeric(pqn)>
    <cfset builderURL = builderURL & "&pqn=#pqn#" />
  </cfif>
  <cfif isDefined("topt") and IsNumeric(topt)>
    <cfset builderURL = builderURL & "&topt=#topt#" />
  </cfif>
  <cfoutput>
    <iframe src="#builderURL#" name="ifrShowQuestionBuilder" id="ifrShowBuilder"  frameborder=0 ></iframe>
  </cfoutput>
</div>

【问题讨论】:

编写一个 cfc,其中包含所有可以在 iframe 中运行的代码。使用 ajax 调用该 cfc 和 javascript 的适当方法以对页面内容进行任何必要的更改。 【参考方案1】:

我猜你正在寻找这样的东西。 使用以下代码创建一个新的 cfm 文件,确保它与您的 question.cfm 文件位于同一文件夹中,然后对其进行测试。

<cfset builderURL="question.cfm?processid=1&category=2&etc=3..." />
<!DOCTYPE html>
<html lang="en">
<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  <script>
    $(document).ready(function () 
      $('#manual_trigger').click(function()
        $('#divPaths').load("<cfoutput>#builderURL#</cfoutput>");
      );
    );
  </script>
</head>
<body>
  <button id="manual_trigger">load</button> <br><br>
  <div id="divPaths"> </div>
</body>
</html>

【讨论】:

以上是关于如何在 ColdFusion 中用 AJAX 替换 iframe的主要内容,如果未能解决你的问题,请参考以下文章

Flex Ajax Bridge,或任何其他带有 ColdFusion 的推送方法?

通过 AJAX 进行 Coldfusion/Lucee 多条件选择

Ajax调用ColdFusion组件而不返回数据

Coldfusion Ajax请求转储不再在Chrome中呈现

ColdFusion无法读取Ajax发送的FormData

如何使用JQuery和ColdFusion处理会话超时警告?