javascript - setInterval 和 Ajax

标签 javascript jquery ajax

当我使用setInterval和ajax从数据库检索数据时遇到这个问题,如果我从数据库检索的数据等于saveHere,那么它将再次循环,直到它不匹配变量 saveHere,它会卡住浏览器,直到我检索到的数据不等于 saveHere。

这是一个例子:

var saveHere = 'RED';
var interval = setInterval(function() {

    var sample = $.ajax({
        type: 'GET',
        url: 'database.php',
        data : data
    }).responseText;

    if (sample != 'RED') {
        clearInterval(interval);
        saveHere = sample;
    }
    else {
        console.log('load again');
    }

},1000);

我真的需要建议。先感谢您。抱歉语法错误。

最佳答案

$.ajax 是异步的,需要您使用回调来获取响应文本。

查看http://api.jquery.com/jQuery.ajax/处的文档

您想要做的是添加一个 success 参数。像这样的事情:

var saveHere = 'RED';

doAjax();

function doAjax() {

    $.ajax({
        type: 'GET',
        url: 'database.php',
        data: data,
        success: function (sample) {
            if (sample != 'RED') {
                saveHere = sample;
            } else {
                console.log('load again');
                doAjax();
            }
        }
    });

}

请注意我是如何删除 setInterval 并将 Ajax 代码包装在函数中的。当 Ajax 查询成功完成时,success 回调将被调用,并给您响应。一旦我们评估了响应,我们就可以再次运行 doAjax 函数来再次运行查询。

关于javascript - setInterval 和 Ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18844365/

相关文章:

javascript - 将架构从 Normalizr v2 转换为 v3 时遇到问题

javascript - 无法解析模块说明符 "three"。相对引用必须以 "/"、 "./"或 "../"开头

javascript - 这个 for-in 循环符合标准吗?

javascript - 创建样式元素,定义一些类并将类添加到元素

javascript - jquery动画帮助

jquery - 暂停 jQuery ajax 脚本直到脚本成功返回

jquery - 为什么在 2.X 中编写 <script> 标签会触发 jQuery.ajaxTransport() ?

javascript - 为什么我的 Javascript 音频在刷新页面后不起作用?

javascript - 褪色图像/流畅的网站使用

c# - 自定义警报框显示不正确