Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX]Błędy podczas odświeżania pliku
Forum PHP.pl > Forum > Przedszkole
Watt
Witam, mam problem z AJAXem. Nie wiem czy błąd stoi o mojej czy AJAXa stronie, gdy dodam do formularza tekst i on zapisze sie w pliku (przez funkcje php) to funkcja plik() nie chce go pokazać lub pokazuje go na chwile a póxniej on znika. (Czasem ten text 'mruga'). Nie wiem czy zawsze się tak dzieje podczas użycia setTimeout ?
Poniżej jest mój skrypt:
Kod
<html><body>

<script language="JavaScript" type="text/javascript">
function getXMLHTTPRequest() {
req = false;
try {
req = new XMLHttpRequest();
} catch(err1) {
   try {
   req = new ActiveXObject("Msxml2.XMLHTTP");
   } catch (err2) {
     try {
     req = new ActiveXObject("Microsoft.XMLHTTP");
     } catch (err3) {
       req = false;
     }
   }
}
return req;
}

var http = getXMLHTTPRequest();
var http2 = getXMLHTTPRequest();

function useHttpResponse() {

var myurl = 'zuo.php'; // tu jest moja domena na ktorej jest skrypt
myRand = parseInt(Math.random()*9996999999113399999);
document.form.pole1.value = document.form.pole1.value.replace(/ /,"+");
document.form.pole2.value = document.form.pole2.value.replace(/ /,"+");
var modurl = "pole1=" + document.form.pole1.value + "&pole2=" + document.form.pole2.value + "&rand=" + myRand;
http.open("POST", myurl, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", modurl.length);
http.setRequestHeader("Connection", "close");
http.onreadystatechange = function() {
     if (http.readyState == 4) {
         if(http.status == 200) {
                     document.getElementById('lol').innerHTML = " Odpowied� serwera: " + http.responseText;
         }
     }else{
         document.getElementById('lol').innerHTML = "laduje";
     }
}


http.send(modurl);
cngit();
plik();
}

function cngit(){
    document.form.pole1.value = document.form.pole1.value.replace('+', " ");
    document.form.pole2.value = document.form.pole2.value.replace('+', " ");
}

function plik(){
myRand = parseInt(Math.random()*9996999999121299999);
http2.open("GET", "baza.txt"+ "?rand=" + myRand);
lol2 = document.getElementById('lol2');
http2.onreadystatechange = function (){
if(http2.readyState == 4 && http2.status == 200){
lol2.innerHTML =  http2.responseText.replace(/\n/g,"<br />\n");
}
}
http2.send(null);
setTimeout("plik1()",5000);
}
function plik1(){
plik();
}

</script>

<form name="form">
<input type="text" name="pole1" style="width: 200px;" /><br />
<textarea name="pole2" style="width: 200px; height: 100px;">
</textarea><br />
<input onClick="useHttpResponse();" type="button" value="Zapisz" />
</form>
<br>
<div id="lol"></div>
<br />
<b>Wynik:</b>
<br />
<div id="lol2"></div>
</body></html>
skowron-line
po 1 primo to zainteresuj sie gotowymi bibliotekami do AJAX -a zaoszczędzi Ci to problemów przy stosowaniu na różnych przeglądarkach no ale nie o tym mowa po więcej infomacji odsyłam do odpowiednich tematów.

a 2 rzecz to
  1. function plik(){
  2. myRand = parseInt(Math.random()*9996999999121299999);
  3. http2.open("GET", "baza.txt"+ "?rand=" + myRand);
  4. lol2 = document.getElementById('lol2');
  5. http2.onreadystatechange = function (){
  6. if(http2.readyState == 4 && http2.status == 200){
  7. lol2.innerHTML = http2.responseText.replace(/\n/g,"<br />\n");
  8. }
  9. }
  10. http2.send(null);
  11. setTimeout("plik1()",5000);
  12. }
  13. function plik1(){
  14. plik();
  15. }

Nie wiem czy taki był twój cel no ale funkcja się zapętla w tym setTimeout() bo sie wykonuje co 5000 ms. dlatego to co chcesz ujrzeć może znikać.
Watt
Chciałem, zeby sie odświeżało co 5 sekund.
Kod
function plik(){
clearInterval(tid);
myRand = parseInt(Math.random()*9996999999121299999);
http2.open("GET", "baza.txt"+ "?rand=" + myRand);
lol2 = document.getElementById('lol2');
http2.onreadystatechange = function (){
if(http2.readyState == 4 && http2.status == 200){
lol2.innerHTML =  http2.responseText.replace(/\n/g,"<br />\n");
}else{
lol2.innerHTML = "Ladowanie";
}
}
http2.send(null);
tid = setInterval("plik1()",5000);
}
function plik1(){
plik();
}
plik();

Zmieniłem na to, ale to jakby ładowało text z cache,a nie z pliku.

Nie wiem czy to ważne, ale zauważyłem, że co drugi raz jest dobrze pokazane ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.