Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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 ajax加载程序_Jquery_Ajax - Fatal编程技术网

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的提示:。在这种情况下,他最初的方法不是很好吗?还有,为什么要禁用异步呢?在这种情况下,他最初的方法不是很好吗?还有,为什么要禁用异步呢?