WN

WN (https://www.wn.se/forum/index.php)
-   Klientsidans teknologier, design och grafik (https://www.wn.se/forum/forumdisplay.php?f=12)
-   -   Mer än bara en Ajax funktion i ett script (https://www.wn.se/forum/showthread.php?t=20499)

bassan 2007-04-09 16:05

Jag vill kunna ha flera olika div:ar som uppdaterar sig på bestämd tid och hämtar te.x en varsin rss-feed edyl.
Problemet är att jag lyckas bara få en av div:arna att hämta informationen, att få 2 eller 3 som hämtar samma går men jag kan inte byta källa.

ag lyckas bara få ett ajax script att fungera åt gången, när jag gör på detta sätt.

KOD:
Kod:

function ajax() {
  if(navigator.appName == "Microsoft Internet Explorer"){
    xml = new ActiveXObject("Microsoft.XMLHTTP");
  }else{
    xml = new XMLHttpRequest();
  } 
  xml.onreadystatechange = Response;
  xml.open('GET','tid.php',true);
  xml.send(null);
  setTimeout ("ajax()", 5000);
}
function Response() {
  if (xml.readyState == 4 && xml.status == 200) {
    document.getElementById('live').innerHTML = xml.responseText;
  }
}

sen anropas den i en div med id=live.

funkar kanon såhär långt, och div:en gör precis vad tid.php säger att den ska göra osv.

Men hur gör jag om jag vill att en annan div med id=live2 ska göra vad som står i tex. tid2.php?

tacksam för svar :)

hnn 2007-04-09 16:50

Skapa flera XML objekt...

bassan 2007-04-09 17:24

Citat:

Originally posted by hnn@Apr 9 2007, 16:50
Skapa flera XML objekt...


Tackar! Problemet är bara att jag inte vet hur du menar. Lust att förklara lite mer ingående med ett exempel?

Tack för ditt snabba svar!

allstars 2007-04-09 18:03

antingen kopierar du javascriptfunktionerna eller så gör du om befintlig så du kan använda samma funktion till att utföra båda kommandon.

Kod:

function ajax(pageurl,divid) {
  if(navigator.appName == "Microsoft Internet Explorer"){
    xml = new ActiveXObject("Microsoft.XMLHTTP");
  }else{
    xml = new XMLHttpRequest();
  }
  xml.onreadystatechange = Response(divid);
  xml.open('GET',pageurl,true);
  xml.send(null);
 
//setTimeout ("ajax()", 5000);
}
function Response(divId) {
  if (xml.readyState == 4 && xml.status == 200) {
    document.getElementById(divId).innerHTML = xml.responseText;
  }
}

setTimeout ("ajax('tid.php','live1'); ajax('tid2.php','live2')", 5000);

Något sådant här kanske...

bassan 2007-04-09 20:34

Jätte snällt jag förstår ungefär scriptet men javascript är inte mitt område direkt och för att jag inte ska prova mig fram hela kvällen så undrar jag:

Kod:

<body onload="ajax();">
ska det vara ajax(pageurl,divid) eller hur ska den vara? har nämligen testat lite olika men får det inte att fungera tyvärr.

samma med:
Kod:

<div id="live"><div>
ska det vara så eller ska den också ändras?


ber om ursäkt för mig okunskap och om detta ska vara jätte basic men försöker lära mig, gillar det det gör!

Robert 2007-04-09 21:23

Citat:

Originally posted by bassan@Apr 9 2007, 20:34
Jätte snällt jag förstår ungefär scriptet men javascript är inte mitt område direkt och för att jag inte ska prova mig fram hela kvällen så undrar jag:

Kod:

<body onload="ajax();">
ska det vara ajax(pageurl,divid) eller hur ska den vara? har nämligen testat lite olika men får det inte att fungera tyvärr.

samma med:
Kod:

<div id="live"><div>
ska det vara så eller ska den också ändras?


ber om ursäkt för mig okunskap och om detta ska vara jätte basic men försöker lära mig, gillar det det gör!

Det ska väl vara typ

Kod:

<body onload="ajax('http://www.rssurl1.com','liv...41;;">
..etc.

Kod:

<div id="live1"><div>
<div id="live2"><div>
<div id="live3"><div>


bassan 2007-04-09 21:54

Har testat det mesta nu och det funkar inte ens med 1 källa till en div.

Här är koden jag använder nu som inte funkar.

Kod:

<head>


<script type="text/javascript">
function ajax(pageurl,divid) {
 if(navigator.appName == "Microsoft Internet Explorer"){
  xml = new ActiveXObject("Microsoft.XMLHTTP");
 }else{
  xml = new XMLHttpRequest();
 }
 xml.onreadystatechange = Response(divid);
 xml.open('GET',pageurl,true);
 xml.send(null);

}
function Response(divId) {
 if (xml.readyState == 4 && xml.status == 200) {
  document.getElementById(divId).innerHTML = xml.responseText;
 }
}
setTimeout ("ajax('tid1.php','live1')", 5000);
</script>
</head>

<body onload="ajax('tid.php','live1');">

<div id="live1"></div>

</body></html>


bassan 2007-04-10 03:01

Testade faktiskt det inlägget som från början gav mig minst, men efter att jag lärt mig lite javascript till så förstod jag, iallafall lite mer.

Dock blev lösningen väldigt osmidig och ful, men fungerar iallafall.

Någon som kan visa hur man kan trimma min nybörjar-kod?
Kod:

<script type="text/javascript">
var div = 0;
var myDiv = 0;

function ajax(url,div) {
myDiv = div;

  if(navigator.appName == "Microsoft Internet Explorer"){
    xml = new ActiveXObject("Microsoft.XMLHTTP");
  }else{
    xml = new XMLHttpRequest();
  }

  xml.onreadystatechange = Response;
  xml.open("GET", url,true);
  xml.send(null);
  setTimeout ("ajax('tid.php','ett')", 5000);
}

function Response() {
  if (xml.readyState == 4 && xml.status == 200) {
    document.getElementById(myDiv).innerHTML = xml.responseText;
}

}
</script>

<script type="text/javascript">
var ddiv = 0;
var mmyDiv = 0;

function aajax(uurl,ddiv) {
mmyDiv = ddiv;

  if(navigator.appName == "Microsoft Internet Explorer"){
    xxml = new ActiveXObject("Microsoft.XMLHTTP");
  }else{
    xxml = new XMLHttpRequest();
  }

  xxml.onreadystatechange = RResponse;
  xxml.open("GET", uurl,true);
  xxml.send(null);
  setTimeout ("aajax('tid2.php','två')", 5000);
}

function RResponse() {
  if (xxml.readyState == 4 && xxml.status == 200) {
    document.getElementById(mmyDiv).innerHTML = xxml.responseText;
}

}
</script>

</head>
<body onload="ajax('tid.php','ett'); aajax('tid2.php','två');">

<div id="ett">laddar</div>
<div id="två">laddar</div>
</body>
</html>


allstars 2007-04-10 10:16

Kod:

setTimeout ("aajax('tid2.php','två')", 5000);
Fungerar detta verkligen? Jag har för mig att åäö inte stödjs
Men om det fungerar är det bra, trots fullösningen.

Det skall gå att slå ihop dem, jag hade visserligen inte testat mitt exempel så det kan ha funnits något litet fel. Det finns verktyg som validerar javascriptet - då kan man se på vilken rad det är fel och rätta det.


Alla tider är GMT +2. Klockan är nu 23:09.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson