当用户运行ajax时该怎么办



我的程序在用户单击单选按钮时执行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);
});

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

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

希望这对你有帮助。

要把这个作为答案贴出来,万一它成功了

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

这将确保在快速连续调用时,您的设置中没有竞争条件。

最新更新