我正在使用下面的Ajax脚本来制作跨域Ajax调用,如果我使用alert(txt);
,它可以正常工作,但是当我将其更改为document.write(txt);
以打印结果时它会停止工作而我不是确定它为什么不起作用,
这可能是一些愚蠢但我无法弄清楚
function xss_ajax(url) {
var script_id = null;
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', url);
script.setAttribute('id', 'script_id');
script_id = document.getElementById('script_id');
if(script_id){
document.getElementsByTagName('head')[0].removeChild(script_id);
}
// Insert <script> into DOM
document.getElementsByTagName('head')[0].appendChild(script);
}
function callback(data) {
var txt = '';
for(var key in data) {
txt += key + " " + data[key];
}
//alert(txt);
document.write(txt);
}
var url = "http://myserver.com";
答案 0 :(得分:1)
我相信在某些浏览器中,您无法在文档加载后调用document.write ...
编辑:这些我罢工的东西肯定不行。正如Teemu指出的那样,打电话给#34;打开&#34;清除文件。另外,MDN说如果你自己没有调用它,调用.write会隐式调用.open。 另一种可能性是文档没有渲染,因为当你开始写作时你将不得不关闭流。您可以尝试(不确定这是否有效):
document.open();
document.write('stuff');
document.close();
击> <击> 撞击>
但是,我强烈建议您只使用更标准的方法写入文档,例如appendChild或使用框架(例如jQuery):
function callback(data) {
var txt = '';
for(var key in data) {
txt += key + " " + data[key];
}
//alert(txt);
//document.write(txt);
document.body.appendChild(document.createTextNode(txt));
}