我有一个应用程序,它使用部署在同一服务器上的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> </div>
<div> </div>
<div style="width: 80%; height: 10px; background-color: #6698FF;"></div>
<div> </div>
<div> </div>
<div id="errormsg" style="text-align: center; font-weight: bold;">Preview Not Available!!!</div>
<div> </div>
<div> </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 /格%3E%3Cdiv%3E%3C /格%3E%3Cdiv%20style =%22width:%2080%;%20height:%2010px;%20background色:%20
消息 / currentApp /%3Chtml%3E%3Chead%3E%3Cbody%3E%3Cdiv%20id =%22container%22%20align =%22center%22%3E%3Cdiv%3E%3C /格%3E%3Cdiv%3E%3C /格%3E%3Cdiv%20style =%22width:%2080%;%20height:%2010px;%20background色:%20
description请求的资源 (/ currentApp /%3Chtml%3E%3Chead%3E%3Cbody%3E%3Cdiv%20id =%22container%22%20align =%22center%22%3E%3Cdiv%3E%3C /格%3E%3Cdiv%3E%3C /格%3E%3Cdiv%20style =%22width:%2080%;%20height:%2010px;%20background色:%20) 不可用。
知道我在这里错过了什么可能导致这个错误?
ps: ContextRootOfdifferentApplication 我正在进行ajax调用的应用程序。 currentApp :我正在进行Ajax调用的应用程序
答案 0 :(得分:1)
好的,最后我找到了我正在做的解决方案/错误。 当我试图打开这个作为弹出窗口我正在写
window.open(response)
由于响应是从ajax调用中获取的html代码,因此无法从中获取URL并抛出404错误。
在用它打开jquery对话框时我犯了同样的错误。
最后这条线对我有用:
$('#response').html(response).dialog({modal:true});