我在 chrome 中遇到了一个非常奇怪的问题。
我的代码是
$('#import').text("Importing...");
$('#import img').removeClass("hidden");
Server.postService("tests", row_datas, function(data) {
// some stuff here
});
执行发布操作后,将删除文本和隐藏类。该代码在 Firefox 中运行良好。
我在 chrome 中遇到了一个非常奇怪的问题。
我的代码是
$('#import').text("Importing...");
$('#import img').removeClass("hidden");
Server.postService("tests", row_datas, function(data) {
// some stuff here
});
执行发布操作后,将删除文本和隐藏类。该代码在 Firefox 中运行良好。
唯一需要的是
Server.async = true
在服务器调用之前。
异步函数按出现顺序触发,但按完成时间顺序返回。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
});
}
)
作为旁注,您的代码逻辑是有问题的,因为通过设置text
of #import
,无论img
有什么hidden
类都将不再存在,但这可能不是重点。
更新
注意到您对我询问您使用 ajax 的评论的回复,我建议您阅读该async
选项并了解您正在做什么可能会或可能不会阻止事件。
我还建议阅读有关jQuery ajax回调的信息,特别是error
, success
, 和complete
(现在,使用 jQuery 1.8+、fail
、done
和always
)。