Почему после выполнения AJAX страница перезагружается?

Здравствуйте,
только знакомлюсь с AJAX, поэтому вопрос может показаться глупым, но для меня эта проблема не решается уже неделю :(
При нажатии кнопки показать запускается ajax, выполняется в контенте появляется необходимая страница и сразу вся страниц начинает перезагружаться. что не так? почему он все таки перезагружается????
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"   
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://xmlns.jcp.org/jsf/core">
    <f:view contentType="text/html">
    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
        <link rel="stylesheet" type="text/css" href="style.css"></link>
        <script>
	function showContent(link) {

		var cont = document.getElementById('cart');
		var loading = document.getElementById('loading');

		cont.innerHTML = loading.innerHTML;

		var http = createRequestObject();					// создаем ajax-объект
		if( http ) {
			http.open('GET', link,true);							// инициируем загрузку страницы
			http.onreadystatechange = function () {			// назначаем асинхронный обработчик события
				if(http.readyState == 4) {
                                    if (http.status == 200) {
					cont.innerHTML = http.responseText;
                                    }// присваиваем содержимое
                                    else { cont.innerHTML = "Загрузка не удалась: " + http.status; }
				}
			}
			http.send(null);    
		} else {
			document.location = link;	// если ajax-объект не удается создать, просто перенаправляем на адрес
		}
	}

	// создание ajax объекта
	function createRequestObject() {
		var Request = null;

    if (window.XMLHttpRequest)
    {
        //Gecko-совместимые браузеры, Safari, Konqueror
        Request = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
        //Internet explorer
        try
        {
             Request = new ActiveXObject("Microsoft.XMLHTTP");
        }    
        catch (CatchException)
        {
             Request = new ActiveXObject("Msxml2.XMLHTTP");
        }
    }
 
    if (!Request)
    {
        alert("Невозможно создать XMLHttpRequest");
    }
    
    return Request;
	}
</script>        
        
    </h:head>
    
    <h:body>
        
        <div class="block">
            <!--Заголовок-->
        <div class="header" align="center">Система информационного обеспечения органов государственной власти </div>
            <!--Меню навигации-->
        <ul class="css-menu-3">
            <li><a href="index.xhtml" class="selected">Текущая обстановка</a></li>
            <li><a href="directory.xhtml">Справочники</a></li>
            <li><a href="reports.xhtml">Отчеты</a></li>
            <li><a href="#">Раздел</a></li>
            <li><a href="#">Еще раздел</a></li>
        </ul>
        <div class="content">
           <!--Карта-->
           <h:form>   
        <div id="cart">
               <iframe src="http://www.openstreetmap.org/export/embed.html?bbox=34.98046875000001%2C50.035973672195496%2C59.50195312500001%2C57.856443276115066&amp;layer=mapnik" 
                       frameborder="0" style="border:0" ></iframe>
           
        </div>
               
           <div id="loading" style="display: none">  
            Идет загрузка...  
           </div> </h:form>
            <!--Параметры-->
        <div class="left">  
        
            <p:accordionPanel>
                <p:tab title="Виды перевозок">
                    <p:selectManyCheckbox class="grid" value="#{checkboxView.selectedModesOfTransport}" layout="grid" columns="2" style="text-align: left">
                       <f:selectItems value="#{checkboxView.modesOfTransport}"/>
                    </p:selectManyCheckbox>
                </p:tab>
                
                <p:tab title="Районы и города">
                   <p:selectManyCheckbox class="grid" value="#{checkboxView.selectedCities}" layout="grid" columns="2" style="text-align: left">
                       <f:selectItems value="#{checkboxView.cities}"/>
                    </p:selectManyCheckbox>
                </p:tab>
                
                <p:tab title="Маршруты">
                    <p:selectManyCheckbox class="grid" value="#{checkboxView.selectedRoute}" layout="grid" columns="4" style="text-align: left">
                        <f:selectItems value="#{checkboxView.route}"/>
                    </p:selectManyCheckbox>
                </p:tab>
                
                <p:tab title="Нарушения">
                    <p:selectManyCheckbox class="grid" value="#{checkboxView.selectedOffense}" layout="grid" columns="1" style="text-align: left">
                        <f:selectItems value="#{checkboxView.offense}"/>
                    </p:selectManyCheckbox>
                </p:tab>
            </p:accordionPanel>
            
            <p:button  onclick="showContent('directory.xhtml')" value="Показать" >
                
            </p:button>
            <p:button id="clean" value="Очистить" >
                
            </p:button>
         
                         
            </div>
        </div>
        
        <div class="clear"></div>
        <!--Подвал - Footer-->
        <div class="footer">
        <p>Главная | <a href="#">О нас</a> | <a href="#">Техническая поддержка</a></p>
        </div>
        </div>
       
    </h:body>
    </f:view>
</html>
  • Вопрос задан
  • 1761 просмотр
Решения вопроса 1
kavi4
@kavi4
Web developer
ну на onclick кнопки может много всего быть повешено, в том числе и отправка формы с перезагрузкой страницы (действие браузера по умолчанию), поэтому можно попробовать юзнуть event.preventDefault() (отменит действие браузера по умолчанию);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
t-alexashka
@t-alexashka
Сразу пишу legacy код
Ну тут какбэ явно написано

document.location = link;	// если ajax-объект не удается создать, просто перенаправляем на адрес
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы