请问,使用ajax时,请求数据,如果返回为空,则继续请求,直到有结果,然后返回结果

1、请求结果如果超过一分钟还没有返回结果,则重新请求2、我说的是一次请求,不是调用其他函数,执行多次请求3、如果不明白什么意思,请参考腾讯的webqqhttp://w.q... 1、请求结果如果超过一分钟还没有返回结果,则重新请求
2、我说的是一次请求,不是调用其他函数,执行多次请求
3、如果不明白什么意思,请参考腾讯的webqq http://w.qq.com

我的ajax只懂得些皮毛,希望能够得到大神的指点,小弟不胜感激!
展开
 我来答
ybbtgjyv
2013-11-29 · TA获得超过190个赞
知道小有建树答主
回答量:339
采纳率:100%
帮助的人:225万
展开全部
ajax 返回后 用户数字签名会丢失照成无法调用其他js函数所以 应该是不能用一个方法实现 除非是settimeout 可以这样判断 ajax之后把获取的数据 放到一个隐藏的input里面 然后 用一个settimeout (function,1000*60) 调用一个function 这个function执行的是 判断隐藏input里面的内容如果为空那么就调用ajax请求,不为空就不执行。
前面是给你说的逻辑 下面是步骤
1、页面放一个隐藏的input <div style="display:none"><input type="text"value="" class="hdinput"></div>或者其他
2、js里面加上一个function 执行
function (){
if(document.getElementByClass("hdinput")[0].value==null||document.getElementByClass("hdinput")[0].value=="")

{//执行你调用ajax请求的那个方法}
}
ajax返回判断为空 给赋值为"" 不为空赋值为其他 就OK了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qq1111qq111111
2013-11-29 · TA获得超过1175个赞
知道小有建树答主
回答量:1166
采纳率:66%
帮助的人:614万
展开全部
你可以在ajax中使用setTimeout()或者setInterval()方法。
setTimeout指的是定时调用code,不过只执行一次,想要再次执行需要重新调用
setInterval与setTimeout类似,区别是他会一直调用,直到手动停止
让他们停止的方法分别是clearTiomeout和clearInterval,
这两个方法你可以搜一下用法,
你这个使用setTimeout会很符合一般人的逻辑,在ajax返回的时候判断是否为空,为空则调用,不为空不调用即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2018-03-13
展开全部

一:把ajax的的调用放在一个函数里面 funa。设置超时时间

ajax设置超时1分钟,

complete的时候判断超时,如果超时,重调一次funa

success的时候判断结果,没有结果的时候,重调一次funa

success有结果的时候,处理结果即可。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhaoapk
2013-11-29 · TA获得超过3771个赞
知道大有可为答主
回答量:1343
采纳率:40%
帮助的人:1615万
展开全部
// 设置timeout
function send () {
    $.jquery('url', {
        timeout: 60000,
        success: function () {
            // 成功
        },
        error: function (o, e) {
            if (e == 'timeout') {
                // 超时了,重新发送
                send();
            }
        }
    });
}
send();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
LXH929257102
推荐于2018-03-13 · TA获得超过489个赞
知道小有建树答主
回答量:545
采纳率:100%
帮助的人:248万
展开全部
while(Xhr.readyState != 4){
var time1 = 获取当前时间;//我不知道怎么获取当前时间

var time2;

while(true){
time2 = 获取当前时间;
if(time2 - time1 == 1分钟){ //如果是格林威治时间1分钟这里写60*1000

break;

}

}

Xhr.send(null);
}
追问
我是用jquery里的ajax,不知道怎么改,能再帮我贴一段更详细的代码吗?谢谢!
追答
var userXhr = getXhr();
userXhr.open("POST", "find?ad=" + ad + "&sid=" + Math.random(), true);
userXhr.onreadystatechange = function() {
代码区

if (userXhr.readyState == 4) {
var r = userXhr.responseText;
if (r === "F") {

} else {

}
}
};
userXhr.send(null);
我基本上不用jquery,更不知道jquery有封装过ajax,上面是ajax的基本结构,send方法表示开始发送请求,如果你理解ajax的结构,你只需要把我第一次回答的那段代码放到 代码区 就可以实现1分钟重后新发送
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式