Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery post请求:如何指示浏览器活动_Jquery_Post - Fatal编程技术网

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访问“标准浏览器资源”可能是不可能的。如果可以,请看我编辑的帖子…我很好奇我的方法从一开始就没有错。。。