JQuery:多个带延迟/保证的JSON请求失败

时间:2013-11-19 03:44:01

标签: jquery ajax json jquery-deferred

我们有一个允许用户通过Ajax请求加载数据的应用程序。比如,我们有一个名为'track'的项目列表。每当用户单击一个轨道时,我们就会发出Ajax请求,获取数据并显示。每个轨道都包装为JQuery小部件。发出请求和处理结果的代码是:

function _fullRefresh() {
    // Prepare parameters ...
    return $.Deferred(function(def) {
        $.getJSON(url, params, function(data) {
            callFunctionRunforLongTime(data);
                    // update some local variables.
            def.resolve();
        }).error(function() {
            def.reject();
        });
    }).promise();
}

......
loadingIcon.show();
this._fullRefresh(forced)
    .always(function() {
        loadingIcon.hide();
    }).fail(function() {
        showError();
    });

当我们有多个打开的曲目时会出现问题。有时用户点击“放大”按钮,然后每个打开的曲目都会发送新请求并更新数据。现在有线事情发生了:有时promise对象是rejected(因此显示错误消息),但是从后端服务器端,HTTP响应代码是200,这意味着后端发送数据没有错误。

当用户点击太快时,并不总是会发生错误。当用户单击按钮一次时可能会发生这种情况。

同时,更新本地窗口小部件变量的代码有时会失败。在我的实现中,更新本地窗口小部件变量的代码大约是10行。

是什么原因?请帮助,谢谢。


解决。

感谢@charlietfl和@ Beetroot-Beetroot。我发现问题不是由javascript引起的。这是因为对MySQL的同时查询使连接失败。

1 个答案:

答案 0 :(得分:0)

感谢@charlietfl和@ Beetroot-Beetroot。我发现问题不是由javascript引起的。这是因为对MySQL的同时查询使连接失败。