Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Działa tylko ostatnie odwołanie
Forum PHP.pl > Forum > Przedszkole
ketna
Witam,
Mam następujący problem: przy zastosowaniu poniższego kodu funkcja zwraca tylko wynik dla ostatniego odwołania na stronie.
Jest to spowodowane tym, że dla wszystkich wywolań funkcji check korzystam tego samego obiektu XMLHttpRequest.
Nie wiem jednak jak odpowiednio przekonstruować funkcje. Proszę o pomoc.

  1. var http = Object();
  2.  
  3. function Object()
  4. {
  5. var ro;
  6. var browser = navigator.appName;
  7. if(browser == "Microsoft Internet Explorer")
  8. {
  9. ro = new ActiveXObject("Microsoft.XMLHTTP");
  10. }
  11. else
  12. {
  13. ro = new XMLHttpRequest();
  14. }
  15. return ro;
  16. }
  17.  
  18. function Response()
  19. {
  20. if(http.readyState == 4)
  21. {
  22. var response = http.responseText;
  23.  
  24. returned = response.split('|');
  25.  
  26. if(response.indexOf('|' != -1))
  27. {
  28. var id=returned[1];
  29. var count=returned[2];
  30.  
  31. document.getElementById('count'+id).innerHTML = count;
  32.  
  33. }
  34. }
  35. }
  36.  
  37. function check(id)
  38. {
  39. document.getElementById('count'+id).innerHTML = 'wait';
  40. http.open('get', 'check.php?id='+id);
  41. http.onreadystatechange = Response;
  42. http.send(null);
  43. }
  44.  
  45.  
  46. <div id="count2"></div><script type="text/javascript">check(2);</script>
  47. <div id="count1"></div><script type="text/javascript">check(1);</script>
  48. <div id="count4"></div><script type="text/javascript">check(4);</script>
  49. <div id="count3"></div><script type="text/javascript">check(3);</script>
biteater2008
Witam! Sporo się nakombinowałem nad tym, żeby skrypt zadziałał, bo problem mnie naprawdę zaintrygował. Oto jest kod, które powinien działać (przynajmniej u mnie na XAMPPie działa poprawnie). Jeżeli będzie Pan miał nadal problemy, to obawiam się, że wiele zdziałać już nie możemy.
CODE

<html>
<head>
<script>
il = 4;
licznik = 1;
http = new Array();
for (i=1;i<=il;i++) {
http[i] = Object();
}

function Object()
{
var ro;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer")
{
ro = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
ro = new XMLHttpRequest();
}
return ro;
}

function Response()
{

if (http[licznik].readyState == 4)
{
var response = http[licznik].responseText;

returned = response.split('|');

if(response.indexOf('|') != -1)
{
var id=returned[1];
var count=returned[2];
document.getElementById('count'+id).innerHTML = count;
}
licznik++;
}
}

function check(id)
{
document.getElementById('count'+id).innerHTML = 'wait';
http[id].open('get', 'check.php?id='+id);
http[id].onreadystatechange = Response;
http[id].send(null);
}
</script>
</head>
<body>
<div id="count1"><script>check(1);</script></div>
<div id="count2"><script>check(2);</script></div>
<div id="count3"><script>check(3);</script></div>
<div id="count4"><script>check(4);</script></div>
</body>
</html>
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.