ajax为什么请求第一次获取数据没值,而第二次以后都有值?

就是请求来的数据第一次点击不显示,第二次以后都能显示了,但是在显示代码中加入alert()语句后就能正常使用了,请问各位知道为什么吗回答下面的问题,我写到了callbac... 就是请求来的数据第一次点击不显示,第二次以后都能显示了,但是在显示代码中加入alert()语句后就能正常使用了,请问各位知道为什么吗
回答下面的问题,我写到了callback里面,要不然加个alert就能正常显示呢

abina2020能不能说清楚点,或者给点代码提示
展开
 我来答
abina2020
2010-08-20 · TA获得超过139个赞
知道小有建树答主
回答量:80
采纳率:100%
帮助的人:74.1万
展开全部
这类问题一般是在外面声明个变量,然后ajax返回数据时改变这个变量值,再然后再在执行ajax请求的下面一个块{}根据这个变量值进行操作。否则,ajax请求还来不及改变那个变量值,你的程序就执行到下面去了,所以你第一次执行后虽然你的值改变了,但是你的那个方法领先一步已经执行完毕,就会出现第一次不起作用,第二次之后才起作用的奇怪问题。
用alert就能执行就是因为alert延迟了执行时间,ajax请求来得及返回,你的变量也来得及赋新值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
赤青色
推荐于2017-06-06 · TA获得超过376个赞
知道小有建树答主
回答量:124
采纳率:0%
帮助的人:111万
展开全部
这个是ajax 同步的问题 不知道 LZ 有没有用下面类似的方法
req.open("POST", url, false);
这里有个false,是异步,就是当ajax发送请求到其他页面,还没得到返回结果,就执行后面的代码,你把FALSE改成TRUE,就是要接受到返回值,才执行后面的代码
补充:你可以这样写
function talktoServer(url,subtxt){
var req = newXMLHttpRequest2();
//注册客户端回调函数
var callbackHandler = getReadyStateHandler2(req);
req.onreadystatechange = callbackHandler;
req.open("POST", url, false);
//对url进行编码
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
//把字符串发送服务器
req.send("UserInfo="+subtxt);
}
//创建一个XmlHttp对象
function newXMLHttpRequest2() {
var xmlreq = false;
//如果支持XmlHttp则创建XmlHttp对象
if (window.XMLHttpRequest) {
xmlreq = new XMLHttpRequest();
} else if (window.ActiveXObject) {
// 是否支持XmlHttp ActiveX
try {
xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e1) {
// 创建第一个ActiveX失败
try {
xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
// 都不能创建对象,返回false
}
}
}
return xmlreq;
}

//服务器回调函数
function getReadyStateHandler2(Request) {
return function () {
if (Request.readyState == 4) {//已经加载
if (Request.status == 200) {//返回成功

//这里写所有处理代码 不要把方法写外面
} else {//出现错误,显示错误状态
//var hellomsg = document.getElementById("hellomsg");
//hellomsg.innerHTML = "ERROR: "+ req.status;
}
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shown_james
2010-08-20 · TA获得超过873个赞
知道小有建树答主
回答量:665
采纳率:0%
帮助的人:624万
展开全部
你没把那方法写在callback函数里吧
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式