1

我在 chrome 中遇到了一个非常奇怪的问题。

我的代码是

$('#import').text("Importing...");
$('#import img').removeClass("hidden");

Server.postService("tests", row_datas, function(data) {
    // some stuff here
});

执行发布操作后,将删除文本和隐藏类。该代码在 Firefox 中运行良好。

4

2 回答 2

1

唯一需要的是

Server.async = true 

在服务器调用之前。

于 2013-04-23T06:53:21.810 回答
0

异步函数按出现顺序触发,但按完成时间顺序返回。text那些简单和removeClass方法的返回速度比您对对象所做的任何事情都慢,这很奇怪Server,但我想这是可能的。如果您需要前两行发生在 之前postService,您可以尝试 jQuery 的deferred.promise. 这是一个展示潜力的小提琴,以及一些要检查的代码:

function firstThing (){
    var dfd = new jQuery.Deferred();
    $('#import').text("Importing...");    
    $('#import img').removeClass("hidden");
    dfd.resolve();
}

$.when( firstThing() ).then(
    function() {
        Server.postService("tests", row_datas, function(data) {
            // some stuff here
        });
    }
)

作为旁注,您的代码逻辑是有问题的,因为通过设置textof #import,无论img有什么hidden类都将不再存在,但这可能不是重点。

更新

注意到您对我询问您使用 ajax 的评论的回复,我建议您阅读该async选项并了解您正在做什么可能会或可能不会阻止事件。

我还建议阅读有关jQuery ajax回调的信息,特别是error, success, 和complete(现在,使用 jQuery 1.8+、faildonealways)。

于 2012-12-12T04:47:54.997 回答