jquery ajax加载程序
我有这样的脚本:jquery ajax加载程序,jquery,ajax,Jquery,Ajax,我有这样的脚本: $("#addk").bind("click", function(event){ //alert("here!"); $("#loader-overlay").show(); $.ajax({ 'async':"False", 'type': "POST", 'url': "http://url/feedback/", 'da
$("#addk").bind("click", function(event){
//alert("here!");
$("#loader-overlay").show();
$.ajax({
'async':"False",
'type': "POST",
'url': "http://url/feedback/",
'data': $("#form").serialize(),
'success': function(msg){
$("#errors").html(msg);
},
'error' : function(){
$("#errors").html('<p>fail</p>');
}
});
$("#loader-overlay").hide();
//return false;
});
进入控制台,然后它就可以正常工作了
这可能是一件非常简单的事情,我就是不能说出来
Alan您的代码基本正确,您正在尝试执行同步调用,因此ajax调用后的代码应该仅在ajax调用返回时执行。但是你有一个小错误。试试这个:
async: false
使用false等于true,因为它是一个非零长度的字符串,因此您将有一个异步调用,并且加载程序在ajax调用启动后立即隐藏—它不会等待调用完成
此外,您不需要引用键,因此此样式也适用:
$.ajax({
async: false,
type: "POST",
url: "http://url/feedback/",
....
但是为什么你甚至需要让电话同步呢?进行同步呼叫将在呼叫期间挂起所有其他进程,因此可能会分散注意力。如果在ajax调用之前显示loader元素,然后在成功处理程序中再次隐藏它,那么它应该可以正常工作:
$("#addk").click(function(event) {
$("#loader-overlay").show();
$.ajax({
type: 'POST',
url: 'http://url/feedback/',
data: $("#form").serialize(),
success: function(msg){
$("#errors").html(msg);
$("#loader-overlay").hide();
},
error: function() {
$("#errors").html('<p>fail</p>');
}
});
return false;
});
您的代码基本上是正确的,您正在尝试执行同步调用,因此ajax调用后的代码应该仅在ajax调用返回时执行。但是你有一个小错误。试试这个:
async: false
使用false等于true,因为它是一个非零长度的字符串,因此您将有一个异步调用,并且加载程序在ajax调用启动后立即隐藏—它不会等待调用完成
此外,您不需要引用键,因此此样式也适用:
$.ajax({
async: false,
type: "POST",
url: "http://url/feedback/",
....
但是为什么你甚至需要让电话同步呢?进行同步呼叫将在呼叫期间挂起所有其他进程,因此可能会分散注意力。如果在ajax调用之前显示loader元素,然后在成功处理程序中再次隐藏它,那么它应该可以正常工作:
$("#addk").click(function(event) {
$("#loader-overlay").show();
$.ajax({
type: 'POST',
url: 'http://url/feedback/',
data: $("#form").serialize(),
success: function(msg){
$("#errors").html(msg);
$("#loader-overlay").hide();
},
error: function() {
$("#errors").html('<p>fail</p>');
}
});
return false;
});
您可能需要在ajax请求中显示和隐藏作为回调的加载。退房: 因此,您可以这样做:
$.ajax({..., beforeSend: function(){ /* show the loading thing */ },
complete: function(){ /* hide the loader */ }});
您可能需要在ajax请求中显示和隐藏作为回调的加载。退房: 因此,您可以这样做:
$.ajax({..., beforeSend: function(){ /* show the loading thing */ },
complete: function(){ /* hide the loader */ }});
谢谢关于false的提示:。谢谢关于false的提示:。在这种情况下,他最初的方法不是很好吗?还有,为什么要禁用异步呢?在这种情况下,他最初的方法不是很好吗?还有,为什么要禁用异步呢?