Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ColdFusion.Window.create不刷新弹出窗口_Javascript_Jquery_Coldfusion - Fatal编程技术网

Javascript ColdFusion.Window.create不刷新弹出窗口

Javascript ColdFusion.Window.create不刷新弹出窗口,javascript,jquery,coldfusion,Javascript,Jquery,Coldfusion,我正在打开一个窗口,通过Coldfusion.window.Create编辑项目。当我单击不同的编辑链接时,窗口总是显示我编辑的第一个项目,而不是我单击的项目。由于某些原因,弹出窗口不会在每次调用中刷新 以下是我的cfm的代码: <cfoutput query="getSavedSelections"> <table class="mytableb" > <tr> <td class="mylistb" style="width:

我正在打开一个窗口,通过Coldfusion.window.Create编辑项目。当我单击不同的编辑链接时,窗口总是显示我编辑的第一个项目,而不是我单击的项目。由于某些原因,弹出窗口不会在每次调用中刷新

以下是我的cfm的代码:

<cfoutput query="getSavedSelections">
<table class="mytableb" >
    <tr>
        <td class="mylistb" style="width:178px;" valign="top">
            #getSavedSelections.SavedSelectionExportName#
        </td>
        <td class="mylistb" style="width:130px;" valign="top">
            (<a onclick="EditSurveyExport(#getSavedSelections.SavedSelectionExportId#,'#scope#')" style="cursor: pointer;cursor:hand;">Edit</a> |  <a onclick="ConfirmExportDeletion('#scope#',#pgmid#,#getSavedSelections.SavedSelectionExportId#,'#surveyAliasname#','#getSavedSelections.SavedSelectionExportName#','csv');" style="cursor: pointer;cursor:hand;">Delete</a>)                            
        </td>
    </tr>
</table>
</cfoutput>
我观察控制台。仅在页面加载后第一次调用此url:

然后在控制台中只能看到id和“创建后”


我无法理解这背后的原因。有人能帮我理解为什么会发生这种情况吗?

我同意Scott的意见,你应该尝试使用更新的JavaScript库,而不是依赖ColdFusion来为你做这件事。你最终会遇到限制

话虽如此,我认为问题在于你打开的每个窗口都必须有一个唯一的名称。否则代码将只打开现有窗口

关于名称参数,请参见:

窗口的名称。此属性是与窗口交互所必需的,包括动态显示或隐藏窗口。如果存在具有指定名称的窗口,则函数将显示该窗口,并忽略其余参数;否则,名称在页面上必须是唯一的


在代码中创建的所有窗口都将具有相同的名称;SavedSelectionEdit窗口。您需要为要打开的每个不同窗口创建唯一的名称。您可能只需将SavedSelectionID参数附加到名称中,假设每个项都是唯一的。

我同意Scott的意见,您应该尝试使用较新的JavaScript库,而不是依赖ColdFusion来为您执行此操作。你最终会遇到限制

话虽如此,我认为问题在于你打开的每个窗口都必须有一个唯一的名称。否则代码将只打开现有窗口

关于名称参数,请参见:

窗口的名称。此属性是与窗口交互所必需的,包括动态显示或隐藏窗口。如果存在具有指定名称的窗口,则函数将显示该窗口,并忽略其余参数;否则,名称在页面上必须是唯一的


在代码中创建的所有窗口都将具有相同的名称;SavedSelectionEdit窗口。您需要为要打开的每个不同窗口创建唯一的名称。您可能只需将SavedSelectionID参数附加到名称,假设每个项都是唯一的。

首先,我要重申Scott和Miguel所说的。如果没有必要,就不要使用它。也就是说,为了回答您的问题,您需要在重新创建窗口之前销毁该窗口,以便让cfwindow代码重新加载内容。这里有一个函数,我曾经这样做过:

var windowCleanup = function(id) {
    try {
        //Destroy the window if it still exists
        ColdFusion.Window.destroy(id, true);
    } catch(e) { }
}
这将完全破坏以前的窗口,然后创建新窗口。然后,无论何时创建新窗口,请在create语句之后运行以下命令:

ColdFusion.Window.onHide(id, windowCleanup);

现在,无论什么时候,无论出于什么原因,该窗口被隐藏,它都将被正确地销毁,您将为新的create方法调用做好准备。

首先,我将重申Scott和Miguel所说的话。如果没有必要,就不要使用它。也就是说,为了回答您的问题,您需要在重新创建窗口之前销毁该窗口,以便让cfwindow代码重新加载内容。这里有一个函数,我曾经这样做过:

var windowCleanup = function(id) {
    try {
        //Destroy the window if it still exists
        ColdFusion.Window.destroy(id, true);
    } catch(e) { }
}
这将完全破坏以前的窗口,然后创建新窗口。然后,无论何时创建新窗口,请在create语句之后运行以下命令:

ColdFusion.Window.onHide(id, windowCleanup);

现在,无论什么时候,无论出于什么原因,该窗口被隐藏,它都将被正确销毁,您将准备好进行新的创建方法调用。

不要使用cfwindow或任何其他ColdFusion客户端UI功能。它们执行不力,令人遗憾地过时,而且极其有限。使用像jQuery和jQueryUI这样的JS库,它有相似的组件,更容易使用,并且有更多的文档。不要使用cfwindow或任何其他ColdFusion客户端UI功能。它们执行不力,令人遗憾地过时,而且极其有限。使用像jQuery和jQueryUI这样的JS库,它有相似的组件,更容易使用,并且有更多的文档;浏览器兼容吗?是的,它是CFWindowAPI的一部分。非常感谢:,我希望是ColdFusion.Window.destroid,真的;浏览器兼容吗?是的,它是cfwindow API的一部分。即使这对我来说很有效,但我只能接受一个,非常感谢:即使这对我来说很有效,但我只能接受一个,非常感谢: