Jquery显示Message然后Ajax然后隐藏消息

时间:2011-11-14 16:41:59

标签: javascript jquery ajax

举个例子

document.ready(function() {
    $("#Show").bind("click", function() 
    {
        var F = Function2();
        if (F)
        {
            // Do Other Stuff.
        }
    }
});

function Function2()
{
    $("#Message").Show();

    $.ajax({
              type: "POST",
               url: [MyURL]
               async: false;
               contentType: 'application/json; charset=utf-8',
               data: JSON.stringify(PostData),
               dataType: "json",
               success: function (returnVal) {
           $("#Message").Hide();
                   return true;
               },
               error: function (xhr, ajaxOptions, thrownError) {
                   return false;
               }
           });

}

</script>




<div id="Message" style="display:none;">
    <!-- Loading Image In here -->
</div>
<a href="#" id="Show" onclick="return:false;">Show then Hide</false>
</code>

现在我想要发生的是这个消息框显示然而由于某种原因AJAX不会显示它,直到AJAX请求完成为止为时已晚。我已将异步设置为false,其中任何一方都有帮助。

2 个答案:

答案 0 :(得分:1)

我认为这个问题的根源是语法错误。 JavaScript区分大小写,因此正确的语法为小写show()hide()

如果您在修复语法错误后仍遇到问题,请尝试使用ajaxStart事件来显示消息并在成功时将其隐藏。

//use the ajaxstart event to display the message
$('#message').ajaxStart(function() {
    $(this).show("slow");
});

$.ajax({   
    type: "POST",   
    url: [MyURL]   
    async: false;   
    contentType: 'application/json; charset=utf-8',   
    data: JSON.stringify(PostData),   
    dataType: "json",   
    success: function (returnVal) {   
        $("#Message").hide("slow"); //hide message on success   
        return true;   
    },   
    error: function (xhr, ajaxOptions, thrownError) {   
        return false;   
    }   
});  

延迟节目或隐藏

$("#message").delay(3000).hide("slow");

这是一个jsFiddle:http://jsfiddle.net/rs83R/

答案 1 :(得分:0)

尝试在获取true或false后隐藏Click事件中的Message div。

删除async:false,我认为这与修复此问题无关。 AJAX调用的目的是进行异步调用。

此外,还有一个错误,它不是$(&#34;#Message&#34;)。显示()它的$(&#34; #Fessage&#34;)。show()全部小写,同样的for hide()。

尝试更改这些,我希望它应该有用。