我正在使用此ajax加载面板http://thisiscontext.com/tools/jQuery-showLoading
我有以下代码:
jQuery('#map').showLoading();
var request = OpenLayers.Request.POST({
url: "service.asmx/DeleteStopPoint",
data: "{'TripId':'" + currentTrip + "','PointId':'" + feature.attributes.PointId + "'}",
async: false,
headers: { "Content-Type": "application/json; charset=utf-8" },
callback: refreshMap
});
jQuery('#map').hideLoading();
在FF中我确实看到加载面板在请求发生之前出现并在其结束后隐藏...但是在chrome中它不会发生。它看起来像面板出现并且不可思议地消失(因为如果我注释掉hideLoading函数,它会在POST之后出现)
任何想法为什么?
答案 0 :(得分:1)
而不是使用同步请求执行正常(异步)请求并隐藏ajax回调中的映射。也不要手工构建JSON,你所拥有的实际上并不是有效的JSON,你应该使用JSON.stringify
。
jQuery('#map').showLoading();
var request = OpenLayers.Request.POST({
url: "service.asmx/DeleteStopPoint",
data: JSON.stringify({ TripId: currentTrip, PointId: feature.attributes.PointId }),
/* async: false, <-- don't do that*/
headers: { "Content-Type": "application/json; charset=utf-8" },
callback: refreshMap
});
function refreshMap(some, arguments0{
...
jQuery('#map').hideLoading();
}