AJAX приводит к Div Dissapearing - PullRequest
1 голос
/ 26 мая 2011

Использование AJAX для вызова скрипта CGI, который открывает файл и распечатывает его в DIV.

Это нормально работает на тестовой странице, которую я имею, но по какой-то причине на другой странице он распечатает содержимое в DIV, а затем очистит DIV. Используя alert (), я вижу, что состояние готовности изменяется с 1,2,3,4,1,4, а затем, после его 4, второй раз содержимое div очищается. Он фактически вызывает функцию updatepage () дважды, но во второй раз DIV очищается. Когда я проверяю в firebug, innerHTML меняется с содержания на "".

На моей тестовой странице этого не происходит, даже если происходит та же последовательность состояния готовности.

Вот фрагмент кода, в котором у меня проблемы:

self.xmlHttpReq.open('POST', cgiScript, true);
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
self.xmlHttpReq.onreadystatechange = function()
 {
  if (self.xmlHttpReq.readyState == 4)
   {
    updatepage(self.xmlHttpReq.responseText);
   }
 }


function updatepage(str) 
   {
    document.getElementById("result").innerHTML = str;
   }

РЕДАКТИРОВАТЬ !!!!!!!!!!!!!!!!!

Хорошо, я думаю, что выяснил, что не так, но я не уверен, почему.

На якоре проблема была вызвана html href = "". Как только я удалил это, div остался населенным.

Это приведет к исчезновению DIV после печати

        <div class="menulinkboxes" id="listdiv">
        <a class="mainmenulinks"
        onclick='openFile("list,autos")'
        href="">auto-list</a>
        </div>

Замена href = "" на href = "#" исправила это. # означает эту страницу

        <div class="menulinkboxes" id="listdiv">
        <a class="mainmenulinks"
        onclick='openFile("list,autos")'
        >auto-list</a>
        </div>

1 Ответ

0 голосов
/ 19 июля 2011

Я знаю, что вы ответили на это, но просто подумали, что я быстро расширю ваш ответ.

href="#"

"#" говорит браузеру искать тег привязки, поэтому, если вы оставите знак # пустым, он привязывается к самому себе.

Кроме того, я обнаружил, что innerHTML может вызвать проблемы, и методы DOM действительно удобны. Однако для получения этого значения оно должно работать нормально. Просто хотел упомянуть об этом.

...