Ajax 使用jquery加载消息
当我的ajax调用检索数据时,我有这个加载消息。但我得到了奇怪的结果。要么消息出现并在ajax完成之前呈现一半,要么根本不出现,让用户怀疑到底出了什么问题。我需要加载消息的原因是,在检索数据时大约有5-10秒的延迟。打开对话框后,绘制地图,然后使用标签重新绘制地图的要素图层 这是我的密码:Ajax 使用jquery加载消息,ajax,jquery,Ajax,Jquery,当我的ajax调用检索数据时,我有这个加载消息。但我得到了奇怪的结果。要么消息出现并在ajax完成之前呈现一半,要么根本不出现,让用户怀疑到底出了什么问题。我需要加载消息的原因是,在检索数据时大约有5-10秒的延迟。打开对话框后,绘制地图,然后使用标签重新绘制地图的要素图层 这是我的密码: function loadData(v) { var reg = 1; var vId = v; var d =
function loadData(v)
{
var reg = 1;
var vId = v;
var d =
{
regionType: reg,
varId: vId
};
//$("#loading").ajaxStart(function () {
// $(this).show();
//}).ajaxStop(function () {
// $(this).hide();
//});
$("#loading").ajaxStart(function () {
$(this).show();
});
$.ajax({
type: "GET",
url: WebRoot + "ws/bis.asmx/Data",
data: d,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
fipsData = data.d;
openBox(d);
init(regType, varId);
$("#loading").ajaxStop(function () {
$(this).hide();
});
} //ends success function
}); //ends ajax call
}; //ends message
无需使用
ajaxStart
或ajaxStop
function loadData(v)
{
var reg = 1;
var vId = v;
var $loading = $("#loading");
var d =
{
regionType: reg,
varId: vId
};
// Starts immediately after this line so no need to use ajaxStart
$loading.show();
$.ajax({
type: "GET",
url: WebRoot + "ws/bis.asmx/Data",
data: d,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
fipsData = data.d;
openBox(d);
init(regType, varId);
}, //ends success function
// Fires even if a failure, so loading spinner won't hang around for no reason
done: function() {
$loading.hide();
}
}); //ends ajax call
}; //ends message
如果设置为使用
ajaxStop
和ajaxStart
,则应将ajaxStop
处理程序移到成功回调之外
$("#loading").ajaxStart(function () {
$(this).show();
}).ajaxStop(function () {
$(this).hide();
});
$.ajax({
type: "GET",
url: WebRoot + "ws/bis.asmx/Data",
data: d,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
fipsData = data.d;
openBox(d);
init(regType, varId);
} //ends success function
}); //ends ajax call
问题是“这个”
“this”变量的变化取决于调用函数的方式
以上链接是了解更多js函数调用的良好开端 我认为没有任何理由将您的
hide()
调用包装在ajaxStop()
方法中-您正在使用success函数,因此除非您的openBox
或init
方法正在进行ajax调用,你可以在成功函数的最后一行调用hide
。我最初的回答是错误地使用了$(这个)
,我相信你的意思是#加载
是的,现在效果很好。我只需将其平滑,并定位加载消息和背景谢谢
$.ajaxStart(function () {
$("#loading").show();
});