Avatar billede sputii Nybegynder
02. april 2010 - 12:52 Der er 15 kommentarer og
1 løsning

HTML til PHP gennem JavaScript såkaldt AJAX.. Tid Problem.

Hej.
Jeg har et AJAX problem..
Hvordan skal koden udskriver det som man vælger i HTML koden i PHP?? Men den går gennem javascript hvor at den skal vente 5 sekunder før den udskriver det fra HTML..
Prøv at kig på koden nedenunder..

HTML Koden:

<form>
Vælg:
<select name="users" onchange="showUser(this.value)">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</form>
<br />
<div id="txtHint"><b>Her ville de blive vist</b></div>


Javascript Koden:

var xmlhttp;
var c=0;

function showUser(str)
{

  if(c>5)
  {
    xmlhttp=GetXmlHttpObject();
    if (xmlhttp==null)
      {
      alert ("Browser does not support HTTP Request");
      return;
      }
    var url="raise.php";
    url=url+"?q="+str;
    url=url+"&sid="+Math.random();   
    xmlhttp.onreadystatechange=stateChanged;
    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);
  }
  else
  {
    c=c+1;
    t=setTimeout("showUser(????)",1000);
  }

}

function stateChanged()
{
if (xmlhttp.readyState==4)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}

Er 100% sikker på at det ikke er en fejl med PHP..

Simpel er det.. Den skal gøre PHP koden efter 5 sekunder.
Avatar billede Slettet bruger
02. april 2010 - 13:32 #1
Du kan vælge at smide en sleep()-timer ind i din PHP-kode, eller du kan vælge at bruge setTimeout()-funktionen fra JavaScript til at vente med at smide dataen til PHP-scriptet.
Avatar billede sputii Nybegynder
02. april 2010 - 13:45 #2
Kan du give eksempel på det?
Avatar billede Slettet bruger
02. april 2010 - 13:59 #3
Du bruger selv setTimeout()-funktionen fra JavaScript, så den vil jeg ikke komme med et eksempel på, men du kan da godt få et hurtigt eksempel på PHP's sleep()-funktion:
<?php
sleep(5);
echo "Denne besked blev først vist 5 sekunder efter at PHP-koden var blevet kaldt!";
?>
Avatar billede sputii Nybegynder
02. april 2010 - 14:36 #4
Naaah det var ikke på den måde ment.. Senere skal jeg nemlig bruge en count down så problemet var jo også at den ikke fungerede med HTML skulle over til PHP fordi det den sendte ville blive ændret her..

t=setTimeout("showUser(??HVAD SKAL DER STÅ HER??)",1000);
Avatar billede Slettet bruger
02. april 2010 - 18:31 #5
Forstår ikke hvad du vil så, du har forvirret mig.
Avatar billede sputii Nybegynder
02. april 2010 - 18:40 #6
Problemet er at jeg ikke ved hvad jeg skal skrive for at koden gemmer på den data som man har valgt i html...

function showUser(str)
{

  if(c>5)
  {
    xmlhttp=GetXmlHttpObject();
    if (xmlhttp==null)
      {
      alert ("Browser does not support HTTP Request");
      return;
      }
    var url="raise.php";
    url=url+"?q="+str;
    url=url+"&sid="+Math.random(); 
    xmlhttp.onreadystatechange=stateChanged;
    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);
  }
  else
  {
    c=c+1;
    t=setTimeout("showUser(????)",1000);
  }

}
Avatar billede sputii Nybegynder
02. april 2010 - 18:41 #7
t=setTimeout("showUser(????)",1000); //HER ER DER SÅ NOGET!!
Avatar billede intenz Novice
02. april 2010 - 18:49 #8
Mener du, at du har problemer med det her kald:
t=setTimeout("showUser(????)",1000);

?

Hvis du vil hente 5 sekunder, bør det se sådan ud:
t=setTimeout(function() { showUser(str); },5000);

Og så kan du fjerne alt med den 'c' værdi du bruger, sådan din kommer til at se sådan ud:

var xmlhttp;

function showUser(str)
{
    xmlhttp=GetXmlHttpObject();
    if (xmlhttp==null)
      {
      alert ("Browser does not support HTTP Request");
      return;
      }
    var url="raise.php";
    url=url+"?q="+str;
    url=url+"&sid="+Math.random();   
    xmlhttp.onreadystatechange=stateChanged;
    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);

    t=setTimeout(function() { showUser(str); }, 5000);
}

function stateChanged()
{
if (xmlhttp.readyState==4)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
Avatar billede Slettet bruger
02. april 2010 - 20:16 #9
Okay nu forstår jeg hvad det er du prøver på at opnå.
Jeg syntes dog det er en lidt "underlige" måde du takler problemet på, ved at lave noget ala et loop 5 gange.

Jeg ville istedet gøre noget i denne stil (ikke testet):

HTML kode
<form>
Vælg:
<select name="users" onchange="showUser(this.value,0)">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</form>
<br />
<div id="txtHint"><b>Her ville de blive vist</b></div>

JavaScript kode
var xmlhttp;

function showUser(str, instant)
{

  if(!instant)
  {
    setTimeout('showUser(\""+str+"\",1), 5000);
    return;
  }
 
  xmlhttp=GetXmlHttpObject();
  if (xmlhttp==null)
  {
    alert ("Browser does not support HTTP Request");
    return;
  }
 
  var url="raise.php";
  url=url+"?q="+str;
  url=url+"&sid="+Math.random(); 
  xmlhttp.onreadystatechange=stateChanged;
  xmlhttp.open("GET",url,true);
  xmlhttp.send(null);
}

function stateChanged()
{
  if (xmlhttp.readyState==4) {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseTex;
  }
}
Avatar billede sputii Nybegynder
02. april 2010 - 19:46 #10
Prøver..

Men har jo sagt at php koden først skal laves efter 5 sekunder og det gør den jo ikke der da der ikke er noget til at stoppe dem i at sende php koden..
Avatar billede sputii Nybegynder
02. april 2010 - 20:01 #11
Stadig virker det ikke...

Output:

Brugernavn     Email     Moral
// Her skulle der have stået noget..
Avatar billede sputii Nybegynder
02. april 2010 - 20:45 #12
Tak :D
Avatar billede Slettet bruger
02. april 2010 - 21:15 #13
Virkede det?
Avatar billede sputii Nybegynder
02. april 2010 - 22:35 #14
Nej desværre..

Den viser aldrig det fra php den står bare og viser det fra html hele tiden..
Avatar billede sputii Nybegynder
02. april 2010 - 22:38 #15
JEG ER SÅ DUM!!!  Min php kode indeholdt noget som faktisk ikke fandtes i databasen.. Men har fundet problemet og fik det fixet..
Avatar billede sputii Nybegynder
04. april 2010 - 19:25 #16
sdads
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester