var err = '';
err += 'err a';
myString = 'Blah';
new Ajax.Request('/check_me.php',
{
method:'get',
parameters: {
'string': myString
},
evalScripts: true,
onComplete: function(t){
var response = t.responseText;
if (response == false) {
//do nothing
} else {
err += 'err b.\n';
//alert(err);
}
}
});
err+= 'err c';
alert(err);
在上面,它应警告“err a”+“err b”+“err c”。但我只是得到“错误”+“错误”。 如果我尝试使用oncomplete警告(错误),那么我可以看到文本被附加到它之前的任何值。在这种情况下,“错误”+“错误b”。如果我关闭此警报框,则会显示最终警报框 a和c。
所以它是从全局变量中读取值而不是写入它。
如何使其工作,即将其设置为“b”?
由于
答案 0 :(得分:5)
Ajax请求是异步发生的,因此在调度ajax调用之后,页面上的Javascript执行将继续,无论是否已返回响应。
因此,当您的脚本警告err
变量时,您获得的输出不是您所期望的,因为尚未调用onComplete
。
答案 1 :(得分:2)
“err a err c err b”是正确的输出。订单是:
您需要使请求同步(不推荐)或将“err c”的附加内容移动到完整方法中(例如“err b”)。