跨域Ajax调用不使用document.write

时间:2012-04-10 20:23:35

标签: javascript xml ajax

我正在使用下面的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";

1 个答案:

答案 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));
}