Ошибки JS, связанные с AJAX в FireFox 4.01 (их раньше не было) - PullRequest
2 голосов
/ 01 июня 2011

Я пытаюсь обновить страницу поиска до всех запросов 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.Я получаю некоторые действительно странные результаты там.

Спасибо за понимание!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...