LZ的问题是全局变量的范围 var cc = ''; //整个js范围内的全局变量 function aa(){ var dd = '';//本函数体内的局部变量,相对于下边ajax function的全局变量 ajax('',function(o){ dd = o.responseText; //可改用全局变量cc存之,函数体外就可以访问得到了 }) }
我当然知道全局变量了,但就是只能在函数里面ALERT出收到的字符,在函数外面ALERT就什么都没有
大家还是看看我的代码吧var str='';//全局变量 var xmlhttp; function loadXMLDoc(url) { xmlhttp=null; if (window.XMLHttpRequest) {// code for all new browsers xmlhttp=new XMLHttpRequest(); } else if (window.ActiveXObject) {// code for IE5 and IE6 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } if (xmlhttp!=null) { xmlhttp.onreadystatechange=state_Change; xmlhttp.open("POST",url,true); xmlhttp.send(null); } }function state_Change() { if (xmlhttp.readyState==4) { if (xmlhttp.status==200) {
glo=responseText; //赋值
可是我没取到值啊
var cc = ''; //整个js范围内的全局变量
function aa(){
var dd = '';//本函数体内的局部变量,相对于下边ajax function的全局变量
ajax('',function(o){
dd = o.responseText; //可改用全局变量cc存之,函数体外就可以访问得到了
})
}
var xmlhttp;
function loadXMLDoc(url)
{
xmlhttp=null;
if (window.XMLHttpRequest)
{// code for all new browsers
xmlhttp=new XMLHttpRequest();
}
else if (window.ActiveXObject)
{// code for IE5 and IE6
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
if (xmlhttp!=null)
{
xmlhttp.onreadystatechange=state_Change;
xmlhttp.open("POST",url,true);
xmlhttp.send(null);
}
}function state_Change()
{
if (xmlhttp.readyState==4)
{
if (xmlhttp.status==200)
{
str=xmlhttp.responseText;
alert(str);//函数里面alert能看到内容
}
}
alert(str);//函数外面alert什么也没有
alert(str);//函数里面alert能看到内容 str1
}
}
alert(str);//函数外面alert什么也没有 str2
你的str2在str1之前执行的话,并没有赋值给str,所以str2打印出的值是空在执行ajax后值成功赋予了str,在此之后使用的话就是你所需要的值了
function show(){
alert(str);
}然后调用这个方法
你给window.str="aaa"一个初始值。
然后再alert(window.str)有没有改变试一下。window.str肯定是全局的了。
如果你的程序真是像你发出来的这段
其实是先执行最后面那句alert,那个时候还没调用state_Change(),自然就是默认的 str='' 啦
然后才到异步赋值
在这就可以看到结果了。
{
if (xmlhttp.readyState==4)
{
if (xmlhttp.status==200)
{
str=xmlhttp.responseText;
alert(str);//函数里面alert能看到内容
}
}
alert('这加一个alert看看会弹出几次');
}