为什么这个代码与XMLHttpRequest和document.write不起作用?

use*_*039 -2 javascript ajax

我的代码:

var req = new XMLHttpRequest();
req.open("GET","http://http://surfkid.redio.de/link.php");
req.send(null);
var textout = var.responseText;
document.write(textout);
Run Code Online (Sandbox Code Playgroud)

在文档上,没有文字.

我做错了什么?

bob*_*nce 5

req.open("GET","http://http://surfkid.redio.de/link.php");
Run Code Online (Sandbox Code Playgroud)
  1. 有一个虚假的额外http://.在任何情况下,除非当前网页本身是由surfkid.redio.de提供的,否则这将不起作用,因为同源策略,所以假设是这种情况,您不需要在以下位置指定服务器名称所有.(如果不是这种情况,那么你将不得不阅读JSONP.)

  2. 是异步XMLHttpRequest.对此请求的回复将不会立即提供; 你必须添加一个事件监听器req.onreadystatechange.

另一种方法是传递一个额外的, false参数open(),以获得同步请求.但是,同步XMLHttpRequest通常被认为是一件坏事,因为它会锁定浏览器UI,直到获取响应为止.

var textout = var.responseText;
Run Code Online (Sandbox Code Playgroud)

你的意思req.

document.write(textout);
Run Code Online (Sandbox Code Playgroud)

document.write通常最好避免.例如,如果在内容完全加载后调用它,则会删除当前文档,如果在异步XMLHttpRequest上使用回调,则会出现这种情况.

更容易编写responseText元素innerHTML(假设响应应该是标记;如果没有创建具有给定文本值的Text节点).

<div id="redio-link"></div>

<script type="text/javascript">
    // Fix up missing XMLHttpRequest in IE6. You only need to do this once.
    //
    if (!window.XMLHttpRequest && 'ActiveXObject' in window) window.XMLHttpRequest= function() {
        return new ActiveXObject('MSXML2.XMLHttp');
    };

    // Fetch link
    //
    var req= new XMLHttpRequest();
    req.onreadystatechange= function() {
        if (this.readyState===4)
            document.getElementById('redio-link').innerHTML= this.responseText;
    };
    req.open('GET', '/link.php');
    req.send();
</script>
Run Code Online (Sandbox Code Playgroud)