2010-06-22 128 views
3

我有一個呈現HTML塊的JSP頁面。在正常使用中,我使用AJAX加載JSP的內容(具體地,使用jQuery.load())並將其插入到頁面中。現在,我需要能夠將這塊HTML加載到不同的域中,這意味着相同的源限制將不允許我使用「正常」的AJAX。如何將我的JSP生成的HTML包裝到JSONP包裝中?

此塊被包含在多個位置,其中一些位於同一個域中,其中一些位於另一個域中。我寧願讓它繼續以當前工作的方式工作,除非傳遞了一個特定參數(很有可能這將是爲JSONP支持傳遞的回調函數)。

我的概念性解決方案(迄今爲止)是輸出帶有單個KEY/VALUE對的JSONP,它具有完整的HTML輸出作爲VALUE。

問題:我無法找到任何方式來獲取當JSP完成渲染並修改它時等待發送的緩衝輸出(在這種情況下,用「\ n」替換實際的新行。是,我得到一個Unterminated String Literal錯誤,當我JSONP功能打的第一個新行

例:

<%@page contentType="text/html"%> 
<% 
    String callback = request.getParameter("callback"); 
%> 
<% if(callback != null) { %> 
    // JSONP Function call, defining Key/Value Pair 
    // New lines break because JavaScript strings cannot cross lines 
    <%= callback %>({"key":' 
<% } %> 

<div id="my_content"> 
    ... 
</div> 

<% if(callback != null) { %> 
    '}) // End of JSONP Function Call 
<% } %> 

回答

2

JSON Taglib library應該做你需要什麼,我沒有用它自己,但它是正確的。解決問題的方法如下:

<%@ taglib prefix="json" uri="http://www.atg.com/taglibs/json" %> 

<json:object> 
<json:property name="key"> 

<div id="my_content"> 
    ... 
</div> 

</json:property> 
</json:object> 

您可能必須自己將JSONP括號包裝在結果中。

+0

看着圖書館,並由於某種原因說服我自己,這不是我正在尋找的。它完全是我想要的。謝謝。 – ebynum 2010-06-23 00:53:09