举个例子
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,其中任何一方都有帮助。
答案 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()。
尝试更改这些,我希望它应该有用。