Я пытаюсь обновить страницу поиска до всех запросов AJAX, и у меня возникли некоторые проблемы как в IE8, так и в Firefox.Кажется, все работает в Chrome (люблю этих парней).Вот эта страница: http://jsfiddle.net/qgWRe/1/
Эта проблема существует на двух уровнях в FF и в одном отдельном экземпляре в IE8 (хотя она может быть связана).
Во-первых, когда я загружаю страницу, я получаю предупреждение, которое я никогда раньше не видел, утверждая, что «Изображение повреждено или усечено: http://scribe.twitter.com/scribe?.........". Я читал, что это может бытьошибка в firebug и то, что это не является критической проблемой, но она возникает только с моим скриптом, написанным на AJAX. Она никогда не проявлялась на моей странице не-AJAX-версии. Она также возникает спорадически.что на самом деле влияет на функциональность), это то, что обработчик событий AJAX вызывает ошибку, заявляющую
An invalid or illegal string was specified" code: "12
[Break On This Error] Failed to load source for: http://localhost:8000/search/
Я думаю, что я выделил его на фрагмент моего кода, который пытается заполнить маркеры Google Maps на основе AJAXвозвращенные результаты. Сначала я удаляю старые маркеры, а затем создаю новые маркеры на лету в качестве обратного вызова AJAX.
//Removes stale Google Maps markers
var deleteMarkers=function(){
$.each(marker,function(n,value){
if(marker[n]){
marker[n].setMap(null);
}
});
//deletes the old markers
marker.length = 0;
latlng.length = 0;
};
//Adds new markers
var resetMarkers=function(){
var newLatLng=new Array();
var markerArray=new Array();
$('.entries').each(function(index){
var entry=$(this);
latlng[index]=new google.maps.LatLng($(this).attr('data-lat'), $(this).attr('data-lng'));
// alert(newLatLng);
marker[index]=new google.maps.Marker({
position:latlng[index],
icon:'{{site}}media/map-icons/iconr'+(index+1)+'.png',
map:map,
});
if(marker[index]){
marker[index].setMap(map);
}
//changes google maps icon color on hover over icon
google.maps.event.addListener(marker[index],'mouseover', function(){
entry.addClass('map-hover');
// alert(marker[index].icon);
marker[index].icon='{{site}}media/map-icons/iconb'+(index+1)+'.png'
marker[index].setMap(map);
});
google.maps.event.addListener(marker[index],'mouseout', function(){
entry.removeClass('map-hover');
marker[index].icon='{{site}}media/map-icons/iconr'+(index+1)+'.png'
marker[index].setMap(map);
});
//changes google maps icon color on hover over entry
$(this).mouseenter(function(){
var number=$(event.target).attr('data-marker');
if(marker[index]){
marker[index].icon='{{site}}media/map-icons/iconb'+(index+1)+'.png'
marker[index].setMap(map);
}
});
$(this).mouseleave(function(){
var number=$(event.target).attr('data-marker');
if(marker[index]){
marker[index].icon='{{site}}media/map-icons/iconr'+(index+1)+'.png'
marker[index].setMap(map);
}
});
});
}
Чтобы реализовать эти функции, у меня есть обработчик событий, подобный следующему:
$('#content form :input').change(function(e){
$('#loading_gif').show();
deleteMarkers();
$.get("/search_async/", $('#content form').serialize(), function(data){
$('#results').html(data);
resetMarkers();
showPrevViews();
//reset bottom paginator hack...probably should move this out of JS
var paginatorElement=$('#caption .paginator').contents().clone();
$('.paginator.bottom').html(paginatorElement);
$('#loading_gif').hide();
});
e.preventDefault();
e.stopPropagation();
});
При тестировании этого кода на моем локальном сервере FireFox снова и снова зависал.
В IE8 проблема, похоже, связанаустало на Google Maps.Я получаю некоторые действительно странные результаты там.
Спасибо за понимание!