Я использую междоменный Ajax-запрос к внешнему API.Время от времени происходит сбой с консольным сообщением:
Uncaught TypeError: Property 'photos' of object [object DOMWindow] is not a function
Глядя на возвращаемый JSON, это действительный JSON, поэтому он не является ошибкой внешнего API.
Я не могу надежно воспроизвести ошибку: единственный фактор, который, кажется, вызывает ошибку, это когда я вызываю запрос быстро и многократно.
В этом случае я вызываю запрос Ajax, когда пользователь перемещает карту Google (чтобы добавить маркеры на карту), и это происходит, если пользователь перемещается слишком быстро.
Вот соответствующие части моего кода:
// Code located inside an external JS file referenced inside the head
// Not wrapped inside document.ready - but all the code setting up
// the map (calling a function which calls a function which adds the
// tilesloaded listener) *is* inside document.ready
function addMarkers() {
var pm_url = "http://www.cyclestreets.net/api/photos.json?key=" + MY_KEY;
$.ajax({
url: pm_url,
crossDomain: true,
contentType: "application/json",
dataType: 'jsonp',
data: pmdata,
jsonpCallback: 'photos',
success: function(data) {
// TBA
},
error: function() {
alert("Sorry, error retrieving photos!");
}
});
}
google.maps.event.addListener(map, 'tilesloaded', function() {
addMarkers(map);
});
Немного погуглив, ошибка Uncaught TypeError: Property 'photos' of object [object DOMWindow] is not a function
обычно возникает, когда jQuery не был загружен.
Однако я не вижу, чтобы это было здесь уместно, потому что функция вызывается из события загруженной плитки карты - и она обычно не срабатывает в первый раз, имеет тенденцию срабатывать после пяти или шести быстрыхкарта изменяет размеры.Так что, если это сработает один раз, страница не может «забыть» о jQuery?
Спасибо за ваш совет.