jquery post请求:如何指示浏览器活动
我正在使用jquery post请求:如何指示浏览器活动,jquery,post,Jquery,Post,我正在使用$.post发送由用户输入构建的json结构: $.post( url1, {'input': JSON.stringify(input)}, function(data) { if (data['status']) window.location.href = url2; else window.location.href = url1; } ); 重定向总是发生在post之后。我的问题是,在发布期间,浏览器似乎处于非
$.post
发送由用户输入构建的json结构:
$.post(
url1,
{'input': JSON.stringify(input)},
function(data) {
if (data['status']) window.location.href = url2;
else window.location.href = url1;
}
);
重定向总是发生在post之后。我的问题是,在发布期间,浏览器似乎处于非活动状态,并且在重定向开始之前不会显示任何活动(即加载进度),这会导致大约1秒的时间,而看起来什么都没有发生。所谓活动,我只是指浏览器告诉用户它正在加载页面的标准方式(例如,我的firefox选项卡上显示的进度圈)。有没有办法在发布开始后立即调用此标准行为
编辑:有些人问我为什么不直接使用标准表单提交。这是因为我需要发送的数据构建起来有点复杂,我不知道这样的事情是否可以通过标准(而不是ajax)方式完成。以下是我构建数据的方式:
var input = [];
$('.shopCat > p > input').each(function() {
input.push({
'id': $(this).closest('div').attr('id'),
'name': $(this).val(),
'parent': $(this).closest('div').attr('data-parent');
});
});
是否可以使用标准post表单构建和发布此类数据?(所以我现在实际上要问两个问题。)在jQuery或javascript中没有一种打包的方法来实现这一点。您可以想象,在很多场景中,人们选择显示等待图标。只需在发布前显示等待内容,然后在回调中隐藏它
$('#waiting').show(); //show waiting icon or whatever
$.post(
url1,
{'input': JSON.stringify(input)},
function(data) {
$('#waiting').hide(); //hide it on callback
if (data['status']) window.location.href = url2;
else window.location.href = url1;
}
);
如果你有一个具体的想法,你想要什么,然后让我们知道。就像你想要一个模态窗口,或者一个特定的div被掩盖一样。一个进度条、一个圈交易、请等待文本等等。在jQuery或javascript中没有打包的方法来实现这一点。您可以想象,在很多场景中,人们选择显示等待图标。只需在发布前显示等待内容,然后在回调中隐藏它
$('#waiting').show(); //show waiting icon or whatever
$.post(
url1,
{'input': JSON.stringify(input)},
function(data) {
$('#waiting').hide(); //hide it on callback
if (data['status']) window.location.href = url2;
else window.location.href = url1;
}
);
如果你有一个具体的想法,你想要什么,然后让我们知道。就像你想要一个模态窗口,或者一个特定的div被掩盖一样。一个进度条、一个圆圈交易、请等待文本等。您可以使用它来指示正在进行某些异步操作。。。只需在发布前调用blockUI,并在回调中取消UI。它不需要阻止UI…请查看此处并查看“咆哮”选项或适合您的用例的内容。您可以使用它来指示正在进行某些异步操作。。。只需在发布前调用blockUI,并在回调中取消UI。它不需要阻止UI…看看这里,看看“咆哮”选项或适合您的用例的东西。如果重定向总是发生,为什么您要使用AJAX请求而不是将表单发布到服务器并在服务器端重定向?由于保存了请求,您也可以从中获得更好的性能。如果重定向总是发生,为什么要使用AJAX请求,而不是将表单发布到服务器并在服务器端重定向?由于保存了请求,您还可以从中获得更好的性能。嗯,您不能强制浏览器显示为忙碌状态。但您可以将光标设置为“忙”
$(document).css('cursor','wait');
$.post(
url1,
{'input': JSON.stringify(input)},
function(data) {
if (data['status']) window.location.href = url2;
else window.location.href = url1;
}
);
尽管不使用ajax可能会更好,但还是使用普通表单提交,因为您选择了在以后重定向。好吧,您不能强迫浏览器看起来很忙。但您可以将光标设置为“忙”
$(document).css('cursor','wait');
$.post(
url1,
{'input': JSON.stringify(input)},
function(data) {
if (data['status']) window.location.href = url2;
else window.location.href = url1;
}
);
虽然不使用ajax可能会更好,但还是使用普通表单提交,因为您选择了以后重定向。谢谢。我可能会使用这种方法,因为从javascript访问“标准浏览器资源”可能是不可能的。如果可以的话,请看我编辑的帖子…我很好奇我的方法从一开始就没有错…谢谢。我可能会使用这种方法,因为从javascript访问“标准浏览器资源”可能是不可能的。如果可以,请看我编辑的帖子…我很好奇我的方法从一开始就没有错。。。