getJSON 调用似乎只触发一次?

发布于 2024-11-17 12:34:07 字数 601 浏览 6 评论 0原文

我有一个 setintervall 调用(每 10 秒)下一个函数:

function myJSONCall(imgIDs) {
    var href = $('#href_' + imgIDs[0]).attr('href');
    alert("MyJSONCall..." + href);

    $.getJSON("/mvc-ajax/ac/availability", {
        url: href
    }, function(availability) {
        alert("Availabilit=" + availability);
        if (availability == "OK") {
            alert("It's a valid location");
        } else {
            alert("It's an invalid location");
        }
    });
    alert("I left from myJSONCall");
}

我不知道为什么,“getJSON”只触发一次。 $.getJSON 之间设置的两个“警报”每 10 秒显示一次。那么问题出在哪里呢?

I have a setintervall which calls (every 10s) the next function:

function myJSONCall(imgIDs) {
    var href = $('#href_' + imgIDs[0]).attr('href');
    alert("MyJSONCall..." + href);

    $.getJSON("/mvc-ajax/ac/availability", {
        url: href
    }, function(availability) {
        alert("Availabilit=" + availability);
        if (availability == "OK") {
            alert("It's a valid location");
        } else {
            alert("It's an invalid location");
        }
    });
    alert("I left from myJSONCall");
}

I don't know why, the "getJSON" is only triggered one time. The both "alert" set between the $.getJSON are shown every 10s. So what's the problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

横笛休吹塞上声 2024-11-24 12:34:07

ajax是异步的。在 ajax 调用返回后移动您的 settimeout (或间隔):

function myJSONCall(imgIDs) {
    var href = $('#href_' + imgIDs[0]).attr('href');
    alert("MyJSONCall..." + href);
    $.getJSON("/mvc-ajax/ac/availability", {
        url: href
    }, function (availability) {
        alert("Availabilit=" + availability);
        if (availability == "OK") {
            alert("It's a valid location");
        } else {
            alert("It's an invalid location");
        }
        setTimeout(myJSONCall, 10000); //SET TIMEOUT HERE
    });
    alert("I left from myJSONCall");
}

ajax is asynchronous. move your settimeout (or interval) after the ajax call returns:

function myJSONCall(imgIDs) {
    var href = $('#href_' + imgIDs[0]).attr('href');
    alert("MyJSONCall..." + href);
    $.getJSON("/mvc-ajax/ac/availability", {
        url: href
    }, function (availability) {
        alert("Availabilit=" + availability);
        if (availability == "OK") {
            alert("It's a valid location");
        } else {
            alert("It's an invalid location");
        }
        setTimeout(myJSONCall, 10000); //SET TIMEOUT HERE
    });
    alert("I left from myJSONCall");
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文