当用户超过ajax时该怎么办

时间:2011-08-30 16:09:22

标签: ajax coldfusion

当用户点击单选按钮时,我的程序会执行ajax调用。成功后,包含单选按钮的表格单元格的背景颜色将更改为让用户知道他们的选择已发布到数据库。

问题是有时背景不会改变。我正在捕捉错误,所以我认为这不是因为错误。我想知道用户是否超过了成功回调。

var setup = {};
setup.url = 'Gateway.cfc';
setup.type= 'POST'
setup.dataType='json';
$.ajaxSetup(setup);

var settings = {};
settings.data = {};
settings.data.method = 'Save';
settings.data.AssignmentID = $('input[name=AssignmentID]').val();
settings.error = function(xhr, ajaxOptions, thrownError) {
    $('#msgErr').text(thrownError);
};

settings.success = function(result) {
    $('#msg').empty();
    $('#msgErr').empty();
    if (result.RTN) { // uppercase RTN
        $('#' + settings.data.AnswerID).addClass('answer');
    } else {
        $('#' + settings.data.AnswerID).next().append('<span class="err"> ' + result.MSG + '</span>');
    }
}

$('input').filter(':radio').change(function() {
    var myName = $(this).attr('name');
    $('input[name=' + myName + ']').closest('td').removeClass('answer');
    settings.data.AnswerID = $(this).val();
    $.ajax(settings);
});

2 个答案:

答案 0 :(得分:3)

您的Ajax帖子到服务器和屏幕上的ui元素更新之间存在延迟。我不知道您使用的是哪个Ajax库,但是您可以插入Ajax框架并显示覆盖整个屏幕的浮动div元素。这个div可以有其他元素,如图像或其他div,spans,p标签等。这在某些库中也称为对话框。

我建议您尝试在Ajax库中找到before_Ajax_send和after_Ajax_receive函数,并将函数附加到这些事件中。 before_send函数应显示浮动div,after_receive应关闭div。

希望这会有所帮助。

答案 1 :(得分:1)

要发布这个作为答案,关于它有可能发挥作用:)

$('input').filter(':radio').change(function() {
    $(this).closest('td').removeClass('answer');
    var mySettings = $.extend(true, {data:{AnswerID: $(this).val()}}, settings);
    $.ajax(mySettings);
});

如果快速连续拨打,这将确保您的设置没有竞争条件。