У меня ошибка только в IE7, где когда я ставлю предупреждение в коде - проблема исправлена.Как указано здесь: /4971629/strannaya-problema-s-javascript-jquery-kotoraya-ispravlyaetsya-s-pomoschy-alert это вероятно для синхронизации в асинхронном вызове.
Дело в том, что я использую вызов jQuery.ajax и успешно вызываю функцию, которая, как я думал, вызывается после того, как данныевернул ...
$.ajax({
type: "POST",
url: 'myurl.aspx/myMethod',
data: "{ id: 3 }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
DisplayMap(msg.d);
}
});
и в моем отображении функции карты я устанавливаю координаты на карте Google, чтобы обвести свойство так:
function DisplayMap(data) {
var defaultMapZoom = data.Outline.ZoomLevel;
var centerCoordinate = new google.maps.LatLng(data.Outline.Latitude, data.Outline.Longitude);
var myOptions = {
zoom: defaultMapZoom,
center: centerCoordinate,
mapTypeId: google.maps.MapTypeId.HYBRID,
scrollwheel: false
};
map = new google.maps.Map(document.getElementById('googleMap'), myOptions);
var mylistener = google.maps.event.addListener(map, 'tilesloaded', function() {
google.maps.event.removeListener(mylistener);
setTimeout(EnableSearch, 500);
});
setUpProertyBorder(data.Outline.Coordinates);
}
function setUpProertyBorder(coordinates) {
var coordsLatLon = createGoogleMapCoordinateArray(coordinates);
var coordOutline = new google.maps.Polygon({
path: coordsLatLon,
strokeColor: '#ff0000',
strokeOpacity: 1.0,
strokeWeight: 2,
fillOpacity: 0
});
coordOutline.setMap(map);
}
function createGoogleMapCoordinateArray(c) {
var coords = [];
for (var x = 0; x < c.length; x++) {
coords.push(new google.maps.LatLng(c[x].Latitude, c[x].Longitude));
}
return coords;
}
Функция EnableSearch просто удаляетналожение у меня на карту Google.Это прекрасно работает в IE 8 и 9, FF и Chrome - но в IE7 я не получаю наброски настройки из вызова setUpProertyBorder.
Я «думал», что функция «success» в jQuery.ajaxвызывается только ПОСЛЕ того, как данные возвращены - таким образом, я думаю, что мои данные есть - но их нет в IE7.
Теперь, если я добавлю предупреждение в setUpProertyBorder - он неожиданно заработает в IE7 (???).?На что я ослеп?