[AJAX] Mrignięcie i błąd w Validatorze

0

Witam. Mam skrypt:

function submitForm(ktora,naw1,naw2)
   {
       var req = null;

       
       if(window.XMLHttpRequest)
           req = new XMLHttpRequest();
       else if (window.ActiveXObject)
           req  = new ActiveXObject(Microsoft.XMLHTTP);
               
               var e,n;
               
               n1 = document.getElementById("nawigacja1");
               n2 = document.getElementById("nawigacja2");
               
               if(naw1 == "none")
               n1.style.display = "none";
               if(naw1 == "block")
               n1.style.display = "block";
               
               if(naw2 == "none")
               n2.style.display = "none";
               if(naw2 == "block")
               n2.style.display = "block";
               
               e = document.getElementById("szablony");
               e.innerHTML = "<img id='ladowanie' alt='ladowanie' src='pliki/images/loading.gif' />";
       req.onreadystatechange = function()
       {
           
           if(req.readyState == 4)
           {
               if(req.status == 200)
               {
                   e.innerHTML = req.responseText;    
               }    
               else    
               {
                   e.innerHTML="Error I can't get more galery";
               }    
           }
       };
       req.open("GET", "pliki/"+ktora, true);
       
       req.send(null);
   }

Wszystko działa poprawnie, lecz po kliknięciu przycisku cała strona przerzucana jest na początek. Co zrobić aby została w miejscu ? Próbowałem sposobu z tablicami i również ten sam efekt. Możliwe jest też ukrywanie warstw, ale niezbyt mi się to podoba, ponieważ cały czas musi się wczytywać cała strona z każdą warstwą.

P.s. poza tym w Validatorze wyskakuje błąd o następującej treści:

document type does not allow element "img" here …ie' src='pliki/images/loading.gif' />";

The element named above was found in a context where it is not allowed. This could mean that you have incorrectly nested elements -- such as a "style" element in the "body" section instead of inside "head" -- or two elements that overlap (which is not allowed).

One common cause for this error is the use of XHTML syntax in HTML documents. Due to HTML's rules of implicitly closed elements, this error can create cascading effects. For instance, using XHTML's "self-closing" tags for "meta" and "link" in the "head" section of a HTML document may cause the parser to infer the end of the "head" section and the beginning of the "body" section (where "link" and "meta" are not allowed; hence the reported error).

0

http://validator.w3.org/check?uri=http%3A%2F%2Fgoogle.pl%2F&charset=(detect+automatically)&doctype=Inline&group=0

Podaj jakiś przykład (stronę gdzie jest to zastosowane) bo z samego kodu to ja nie będę kombinować.

0

<a href="#" style="display: none" onclick="submitForm('karta1.xml','none','block')" id="nawigacja1"></a>

i

<a href="#" onclick="submitForm('karta2.xml','block','none')" id="nawigacja2"></a>

0

return false z onclicka powinien załatwić sprawę.

0

Tzn. dokładniej to mam dodać return false na końcu funkcji submitForm ?

Jeśli tak to nie działa, a jeśli nie to czy mógłbyś podać konkretnie gdzie to wpisać ?

0

onclick="return submitForm()". No i odpowiednia wartość zwrócona z funkcji.

0

<a href="#" onclick="return submitForm('karta2.xml','block','none')" id="nawigacja2"></a>

Dałem tak, ale domyślam się, że to nie o to chodzi. Co masz na myśli: "odpowiednia wartość zwrócona z funkcji" ?

0

To, żeby w onclick pojawił się ekwiwalent "return false". Czyli funkcja musi zwracać false - wtedy przeglądarka nie wykonuje domyślnej akcji dla kliknięcia w link, którym jest przejście pod wskazany adres.

0

Wielkie dzięki. Wszystko działa jak należy, a o co chodzi w tym błędzie w Validatorze ?

0

Bez kodu html, który poddajesz walidacji ciężko cokolwiek określić. Po prostu masz element img w niedozwolonym miejscu.

0

Masakra. Validator nie rozumie skryptu i wali durne komentarze ponieważ myśli że jest zamieszczone w sekcji HEAD. Zakomentuj skrypt i będzie hulało.

<script type="text/javascript">
//<!--
TUTAJ SKRYPT
//-->
</script>

Każda normalna przeglądarka go zinterpretuje, a ten zj** go po prostu pominie.

0

Albo po prostu rozbij ciąg '<img...' na '<'+'img...'

1 użytkowników online, w tym zalogowanych: 0, gości: 1