在jQuery AJAX的beforeSend上返回false - 调用$ .ajaxError

时间:2014-02-09 10:48:11

标签: jquery ajax

function load() {
            var url = buildUrl(null, true);
            $.ajax(url, {
                cache: true,
                dataType: 'json',
                beforeSend: function(xhr) {
                    if (typeof plugin.cache[url] !== 'undefined') {
                        var result = plugin.cache[url];
//                        xhr.done();
//                        xhr.abort();
//                        xhr.complete();
                        return false;
                    }
                    return true;

                },
                success: function(result, textStatus, jqXHR ) {


                    handleResult(result);

                    plugin.cache[url] = JSON.stringify(result);
                }
            });

        };




$(document).ajaxError(function(event, jqxhr, settings, exception) {
switch (jqxhr.status) { 
  ..
  }
}

当我缓存结果时,我希望$.ajax不要继续通话。 如果我返回false或从xhr.abort()调用beforeSend(),则会触发ajaxError。当我拨打xhr.done()xhr.complete()时,呼叫将继续。

有没有办法可以在不触发$.ajaxError的情况下停止通话?

1 个答案:

答案 0 :(得分:2)

你可以按照这样的方式移动你需要进行ajax调用的天气测试:

function load() {
    var url = buildUrl(null, true);
    if (typeof plugin.cache[url] === 'undefined') 
    {
        $.ajax(url, {
            cache: true,
            dataType: 'json',
            success: function(result, textStatus, jqXHR ) {
                plugin.cache[url] = JSON.stringify(result);
            }
        });
    }
    handleResult(plugin.cache[url]);
};