0

我有一个使用部署在同一台服务器上的 Apache Velocity 的应用程序(因为我在本地开发它,但可能在 Prod 的另一台服务器上)。从我当前的应用程序中,我需要从该应用程序中获取 Velocity 模板并在 Jquery 对话框中显示该模板。我能够进行跨域ajax调用

$.ajax({
         url         : '/ContextRootOfdifferentApplication/preview.do',
         data        : 'previewJson=' + JSON.stringify(dataForPreview),
         contentType : "text/plain; charset=utf-8",
         crossDomain : true,
         type        : "POST",
         dataType    : 'html',
         success     : function(response){
             window.open(response);
           }
         });

在调试器中,我可以将响应视为有效的 HTML

<html>
<head>
<body>
    <div id="container" align="center">
    <div>&nbsp;</div>
    <div>&nbsp;</div>
    <div style="width: 80%; height: 10px; background-color: #6698FF;"></div>
    <div>&nbsp;</div>
    <div>&nbsp;</div>
    <div id="errormsg" style="text-align: center; font-weight: bold;">Preview Not Available!!!</div>
    <div>&nbsp;</div>
    <div>&nbsp;</div>
    <div style="width: 80%; height: 10px; background-color: #6698FF;"></div>
    </div>
</body>
</html>

但是,一旦我尝试将此 HTML 页面显示为弹出窗口或在 jQuery 对话框中,就会出现 404 错误

HTTP 状态 404 - /currentApp/%3Chtml%3E%3Chead%3E%3Cbody%3E%3Cdiv%20id=%22container%22%20align=%22center%22%3E%3Cdiv%3E %3C/div%3E%3Cdiv% 3E %3C/div%3E%3Cdiv%20style=%22width:%2080%;%20height:%2010px;%20background-color:%20

消息 /currentApp/%3Chtml%3E%3Chead%3E%3Cbody%3E%3Cdiv%20id=%22container%22%20align=%22center%22%3E%3Cdiv%3E %3C/div%3E%3Cdiv%3E %3C /div%3E%3Cdiv%20style=%22width:%2080%;%20height:%2010px;%20background-color:%20

描述 请求的资源 (/currentApp/%3Chtml%3E%3Chead%3E%3Cbody%3E%3Cdiv%20id=%22container%22%20align=%22center%22%3E%3Cdiv%3E %3C/div%3E%3Cdiv %3E %3C/div%3E%3Cdiv%20style=%22width:%2080%;%20height:%2010px;%20background-color:%20) 不可用。

知道我在这里缺少什么可能导致此错误吗?

ps: ContextRootOfdifferentApplication我正在对其进行 ajax 调用的应用程序。 currentApp : 我正在进行 Ajax 调用的应用程序

4

1 回答 1

1

好的,最后我找到了我正在做的解决方案/错误。当我试图将其作为弹出窗口打开时,我正在写

window.open(response)

由于响应是从 ajax 调用中获取的 html 代码,因此无法从中生成 URL 并引发 404 错误。

我在用它打开一个 jquery 对话框时犯了同样的错误。

最后这条线对我有用:

$('#response').html(response).dialog({modal:true});
于 2012-07-09T08:47:59.443 回答