0

同じサーバーにデプロイされたApacheVelocityを使用するアプリケーションがあります(ローカルで開発していますが、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 に答える