我有一个JSP页面,它呈现一个HTML块。在正常使用中,我使用AJAX(具体地,使用jQuery.load()
)加载JSP的内容并将其插入到页面中。现在,我需要能够将这个HTML块加载到不同的域中,这意味着相同的源限制将不允许我使用“普通”的AJAX。
此块包含在多个位置,其中一些位于同一个域中,其中一些位于备用域中。我希望它继续按照当前的工作方式工作,除非传递一个特定的参数(很可能,这将是为JSONP支持传递的回调函数)。
我的概念解决方案(到目前为止)是输出JSONP,只有一个KEY / VALUE对,具有完整的HTML输出作为VALUE。
问题:当JSP完成渲染并修改它时,我找不到任何方法来获取等待发送的缓冲输出(在这种情况下,用“\ n”替换实际的新行。 ,当我的JSONP函数遇到第一个新行时,我收到Unterminated String Literal
错误。
实施例
<%@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
<% } %>
答案 0 :(得分: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括号括在结果周围。