webForumDet fria alternativet

Hämta 2 filer samtidigt med AJAX?

Webbutveckling

6 svar · 631 visningar · startad av Bosse168

Medlem sedan nov. 20031 018 inlägg
Frågan#1

Hejsan alla AJAX gudar :)
Har en liten fråga rörande AJAX till er.
Använder koden nedan för att hämta ut information från lista.php och visa den snyggt o fint på min sida.

AJAX filen:

function creat_Object()
{ 
var xmlhttp;
// Firefox & Opera Browsers 
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') 
{
try 
{
xmlhttp = new XMLHttpRequest();
} 
catch (e) 
{
alert("Din webbläsare stödjer inte XMLHTTPRequest");
xmlhttp = false;
}
}
// Annars för IE
else
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
return xmlhttp;
}

var request = creat_Object();
function sever_interaction()
{
if(request.readyState == 0)
{
document.getElementById('aja_pol').innerHTML='';
document.getElementById('aja_pol').innerHTML = 'Laddar...';
}
if(request.readyState == 4)
{
var answer = request.responseText;
document.getElementById('aja_pol').innerHTML='';
document.getElementById('aja_pol').innerHTML = answer;
}
}
function call_server()
{
request.open("GET", "/lista.php"); 
request.onreadystatechange = sever_interaction;
request.send('');

}
// startar och uppdaterar sidan
window.setInterval("call_server()", 7000);

På sidan:

<div id="aja_pol"> </div>

Min fråga lyyyyder om det är möjligt att hämta informationen ur en annan fil (nytt.php) i samma script och skriva ut i en annan div-tagg?

Tack på förhand.

P.s. Den som svarar/löser detta kommer garanterat hamna på plus hos tomten. ;)

Medlem sedan aug. 20039 340 inlägg
#2

Nu har jag såklart en del synpunkter på saker som skulle kunna göras annorlunda, men om jag håller mig till att bara besvara din fråga utan att stöka för mycket med din kod skulle det kunna se ut så här:

var request1 = creat_Object(), request2 = creat_Object();
function sever_interaction(req, divname)
{
if(req.readyState == 0)
{
document.getElementById(divname).innerHTML='';
document.getElementById(divname).innerHTML = 'Laddar...';
}
if(req.readyState == 4)
{
var answer = req.responseText;
document.getElementById(divname).innerHTML='';
document.getElementById(divname).innerHTML = answer;
}
}

function call_server()
{
request1.open("GET", "/lista.php"); 
request1.onreadystatechange = function(){
    sever_interaction(request1 , 'aja_pol');
};
request1.send('');

request2.open("GET", "/nytt.php"); 
request2.onreadystatechange = function(){
    sever_interaction(request2 , 'nytt_id');
};
request2.send('');

}
// startar och uppdaterar sidan
window.setInterval("call_server()", 7000);

Notera här att jag återanvänder sever_interaction (Hrrrm!!) och skickar med div-namnet och equest-objektet som argument. Konstruktionen request2.onreadystatechange = function(){...}; är en anonym funktion som alltså är en förutsättning för att skicka med argument till sever_interaction utan att modda koden för mycket.

Medlem sedan nov. 20031 018 inlägg
#3

Verkar inte funka för nu skriver den inte ut någonting på sidan.
Du får mer än gärna stöka om koden hur mycket du vill :bire

Medlem sedan aug. 20039 340 inlägg
#4

Vad får du för felmess då?
Det kanske inte framgick, men diu behöver fortfarande dina instansmetoder i början av koden:

function creat_Object()
{ 
var xmlhttp;
// Firefox & Opera Browsers 
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') 
{
try 
{
xmlhttp = new XMLHttpRequest();
} 
catch (e) 
{
alert("Din webbläsare stödjer inte XMLHTTPRequest");
xmlhttp = false;
}
}
// Annars för IE
else
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
return xmlhttp;
}
Medlem sedan nov. 20031 018 inlägg
#5

*doh* ofc. Nu funkar det, tackar :)
Blev dock lite orolig när du säger att saker skulle kunna göras annorlunda.
Är inte koden bra?

Medlem sedan aug. 20039 340 inlägg
#6

Det finns olika sätt att se på saker. Kod som fungerar är bra kod är ett sätt att se på saker. Jag skulle ha skrivit koden så att den ser snyggare ut och håller isär de olika delarna av koden. (Märks mycket mer vid större kodmassor)

Medlem sedan maj 200010 687 inlägg
#7

Indentering är ju en bra grej också. :)

265 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
116 ms — ändringar (db)