Ajax加载面板适用于FF,但不适用于Chrome。知道为什么吗?

时间:2013-08-11 21:26:45

标签: jquery ajax cross-browser

我正在使用此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之后出现)

任何想法为什么?

1 个答案:

答案 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();
}