function ajax(href){
var req = new XMLHttpRequest();
req.onreadystatechange = function(){
if (req.readyState == 4) {
return req.responseText;
}
};
req.open("GET", href, false);
req.send(null);
}
var b,c;
c=ajax('a.js');
alert(c)a.js里 只要一行 alert("ssss")为什么我取不到值??我是放在web服务器下执行的
谢谢
var req = new XMLHttpRequest();
req.onreadystatechange = function(){
if (req.readyState == 4) {
return req.responseText;
}
};
req.open("GET", href, false);
req.send(null);
}
var b,c;
c=ajax('a.js');
alert(c)a.js里 只要一行 alert("ssss")为什么我取不到值??我是放在web服务器下执行的
谢谢
if (req.readyState == 4) { if(req.status== 200 ){
return req.responseText;
}
}
下面是正确的var a;
function ajax(href,cb){
var req = new XMLHttpRequest();
req.onreadystatechange = function(){
if (req.readyState == 4) {
a=req.responseText;
}
};
req.open("GET", href, true);
req.send(null);
}
ajax('a.txt')
window.onclick=function(){
alert(a)
}
你没明白,或者说是假明白或半明白半糊涂。
真正的原因是异步时(req.open("GET", href,false);),不可以使用onreadystatechange调用回调函数;而是要直接处理:function ajax(href){
var req = new XMLHttpRequest();
req.open("GET", href, false);
req.send(null);
//直接处理:
alert(req.responseText)
}
open(参数1,参数2,参数3)
参数3布尔类型,true表示异步,false表示同步,
异步的时候会去执行onreadystatechange设置的回调函数,而同步时不会。。
function ajax(href,cb){
var req = new XMLHttpRequest();
req.onreadystatechange = function()
{
if (req.readyState == 4)
{
if(cb)cb(req.responseText)
}
};
req.open( "GET", href, true);
req.send(null);
}
ajax('a.txt',function(x){
alert(x)
})
function ajax(href,cb){
var req = new XMLHttpRequest();
req.open( "GET", href, false);
req.send(null);
if(cb)cb(req.responseText)//这要放在send下面
}
ajax('a.txt',function(x){
alert(x)
})
谢谢6楼