我的代码:
var req = new XMLHttpRequest();
req.open("GET","http://http://surfkid.redio.de/link.php");
req.send(null);
var textout = var.responseText;
document.write(textout);
在文档上,没有文字。
我做错了什么?
答案 0 :(得分:5)
req.open("GET","http://http://surfkid.redio.de/link.php");
有一个虚假的额外http://
。在任何情况下,除非当前网页本身是由surfkid.redio.de提供的,否则这将不起作用,因为同源策略,所以假设是这种情况,您不需要在以下位置指定服务器名称所有。 (如果情况并非如此,那么您将不得不阅读JSONP。)
是异步XMLHttpRequest。对此请求的回复将不会立即提供;您必须向req.onreadystatechange
添加一个事件监听器。
另一种方法是将额外的, false
参数传递给open()
,以获得同步请求。但是,同步XMLHttpRequest通常被认为是一件坏事,因为它会锁定浏览器UI,直到获取响应为止。
var textout = var.responseText;
您的意思是req
。
document.write(textout);
通常最好避免使用 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>
答案 1 :(得分:2)
你不能得到var.responseText
,你必须从请求中得到它。
同样document.write
是一个函数,所以从请求对象传递字符串。
document.write(req.responseText)
但老实说,看看使用像jquery这样的框架,从长远来看,它可以节省你的时间。
$.ajax({ url: "http://http://surfkid.redio.de/link.php", context: document.body, success: function(data){
document.write(data);
}});
答案 2 :(得分:0)
:固定代码..你没有处理回复...当我尝试获取你的脚本时,我收到错误,所以我替换了自己的页面。
var req = new XMLHttpRequest();
req.onreadystatechange = function() {
// in case of network errors this might not give reliable results
if(this.readyState == 4)
document.write(this.responseText);
}
req.open("GET","http://api.fatherstorm.com/test/redio_result.php");
req.send();