javascript - 非异步 POST 调用

标签 javascript jquery ajax

我有以下可以工作并返回数据的内容:

function ScrollToBottom() {
    $.ajax({
        async: false,
        type: "POST",
        url: "index.aspx/function",
        data: 'val,val2,val3',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: OnSuccess,
        failure: function (response) {
            alert('An error has occured, please refresh the page.');
        },
        error: function (response) {
            alert('An error has occured, please refresh the page.');
        }
    });
}

function OnSuccess(response) {
    var xmlDoc = $.parseXML(response.d);
    var xml = $(xmlDoc);
}

当前问题出现在 Firefox 中,因为 async: false 无法正常执行。如果用户一直滚动到页面底部,则会调用上述函数。

Firefox 中发生的情况是用户滚动,该函数被调用多次,而不是说 5 组不同的数据,用户会看到同一组数据 5 次。

我对上述调用的替代方案是什么,这样它就不会是异步和普通的旧同步“等到前一位完成”代码?

最佳答案

如果正在加载,请尝试设置一个标志:

var loading = false;
function ScrollToBottom() {
    if(loading) return;
    loading = true;
    $.ajax({
        async: false,
        type: "POST",
        url: "index.aspx/function",
        data: 'val,val2,val3',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: OnSuccess,
        failure: function (response) {

            alert('An error has occured, please refresh the page.');
        },
        error: function (response) {
            alert('An error has occured, please refresh the page.');   
        },
        always: function(response){
            loading = false;
        }
    });
}

function OnSuccess(response) {
    var xmlDoc = $.parseXML(response.d);
    var xml = $(xmlDoc);
}

关于javascript - 非异步 POST 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42063901/

相关文章:

jQuery UI 选项卡 : Mismatching fragment identifier

javascript - 我的 Ajax 调用未定义

javascript - 在 Vue.js 中将事件从子组件引发到容器组件?

javascript - CSS3 矩阵旋转

jquery - 在页面中的每个图像弹出窗口中添加动态文本框以进行图像描述

jquery - 从检查值的 ajax 成功函数内部提交表单

javascript - Knockout + Select2——设置默认值?

javascript - 如何在每 5 个单词之后将 <br> 标签放在一个长字符串中?

javascript - 如何创建没有无限摘要循环的随机/随机过滤器

jquery - 将背景图像从特定父 div 更改为多个 div