1

我正在使用这个 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 之后)

知道为什么吗?

4

1 回答 1

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();
}
于 2013-08-11T21:59:52.323 回答