【发布时间】:2013-01-17 16:18:01
【问题描述】:
我们有以下情况:
在default.aspx我们有一个链接:
<a href="javascript:doPost()">test</a>.
和JS代码:
function doPost() {
$.post('AnHttpHandlerPage.aspx',"{some_data:...}", function(data) {
if(data.indexOf("http://")==0)
window.open(data);
else{
var win=window.open();
with(win.document) {
open();
write(data); //-> how to execute this HTML code? The code also includes references to other js files.
close();
}
}
}).error(function(msg){document.write(msg.responseText);});
}
回调可以首先是一个url地址或第二个必须执行的html代码。 选项 1 适合,但在选项 2 中,将打开一个新窗口,其中代码已编写但未执行。
很清楚,既然发生在流中,就无法执行。那么问题来了,你怎么能解决它?也许是refresh() 或类似的?
由于客户的要求,工作流程无法更改,必须在doPost()内解决。
编辑
案例 2 中的响应是这样的 HTML。 这部分应该执行:
<HTML><HEAD>
<SCRIPT type=text/javascript src="http://code.jquery.com/jquery-latest.js">
</SCRIPT>
<SCRIPT type=text/javascript>
$(document).ready(function() {
do_something...
});
</SCRIPT>
</HEAD>
<BODY>
<FORM>...</FORM>
</BODY>
</HTML>
请帮忙。谢谢。
【问题讨论】:
-
什么是选项 1 和选项 2。如果您尝试打开一个需要整体呈现的新 html 页面。您不应该在该页面上写入数据。事实上,您应该只将 html 链接传递给 win.document,并且应该只在新窗口中打开链接,一切都会正常执行。从一个页面到另一个页面的动态 url 生成。
标签: javascript jquery asp.net post httphandler