[英]Render any response from ajax call (HTML and/or JS)
我想知道什么是呈现ajax调用中任何内容的最有效方法。 响应可以是html和/或javascript
因为ajax调用是同步的,所以我使用document.write()来完成它。 现在,我必须使用异步调用,这样我就不能仅使用document.write来写入页面,而是必须在调用完成后将内容添加到特定的html对象中。
我试过了
$jQuery.ajax({
url: "myURL.ashx",
data: params,
success: function(data){
var newdiv = document.createElement('div');
newdiv.innerHTML = data;
document.getElementById('target').appendChild(newdiv);
}
但对于返回的任何JavaScript均无效,它很容易损坏(这意味着;它不呈现内容,或者在新标签页中显示内容时会做一些奇怪的事情)。 我只是为简单的场景工作。
我想知道是否有更好的方法比这更好。
谢谢!
编辑
例如,此代码无法正常工作。 它将内容呈现在空白页面上,而不是将内容添加到当前页面。 我正在使用FF 3.6进行测试。 为简单起见,我在str
var上编码了javscript,但是该脚本是从服务器返回的。 服务器返回的内容是ADS,该内容是动态的并且是完全随机的。
var str = "<sc" + "ript language=\"JavaScript\" type=\"text/javascript\">";
str += "document.write('<scr'+ 'ipt language=\"JavaScript\" src=\"anything.js\" type=\"text/javascript\"><\/scr' + 'ipt>');";
str += "<\/script>";
var newdiv = document.createElement('div');
newdiv.innerHTML = str;
document.getElementById('target').appendChild(newdiv);
jQuery相当于您所拥有的:
success: function(data){
$('<div />')
.append(data)
.appendTo('#target');
}
您将必须解释您的意思
不适用于返回的任何JavaScript
以获得更好的答案。
如果有任何<script>
内标签data
jQuery将如果您使用评估它们在全球范围内jQuery.append
功能就像我上面证明。
只需删除document.write
语句即可。 仅在页面仍在加载时使用document.write
。
<script src="anything.js" type="text/javascript"></script>
与进行加载JavaScript的ajax调用相比,包含js文件的方法更好。 我会看.getScript()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.