Avatar billede l_otto Nybegynder
21. juni 2007 - 22:53 Der er 15 kommentarer

Hjælp til AJAX kode

jeg prøver at få dette eks. til at virke

http://www.w3schools.com/php/php_ajax_database.asp

men der sker ikke noget når jeg vælger et navn fra dropdown.
Avatar billede l_otto Nybegynder
21. juni 2007 - 22:53 #1
side 1

<html>
<head>
<script src="selectuser.js"></script>
</head>
<body><form>
Select a User:
<select name="users" onchange="showUser(this.value)">
<option value="15">Peter Griffin</option>
<option value="2">Lois Griffin</option>
<option value="3">Glenn Quagmire</option>
<option value="4">Joseph Swanson</option>
</select>
</form><p>
<div id="txtHint"><b>User info will be listed here.</b></div>
</p></body>
</html>
Avatar billede l_otto Nybegynder
21. juni 2007 - 22:53 #2
selectuser.js

var xmlHttpfunction showUser(str)
{
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request")
return
}
var url="getuser.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 || xmlHttp.readyState=="complete")
{
document.getElementById("txtHint").innerHTML=xmlHttp.responseText
}
}function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
//Internet Explorer
try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
catch (e)
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
}
return xmlHttp;
}
Avatar billede l_otto Nybegynder
21. juni 2007 - 22:54 #3
getuser.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>

<?php
$q=$_GET["q"];

$con = mysql_connect('localhost', 'xxx', 'xxx');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("xxx", $con);

sql="SELECT * FROM tilmelding WHERE id = '".$q."'";

$result = mysql_query($sql);

echo "<table border='1'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
<th>Hometown</th>
<th>Job</th>
</tr>";

while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['fornavn'] . "</td>";
echo "<td>" . $row['mobiltlf'] . "</td>";
echo "<td>" . $row['aftentlf'] . "</td>";
echo "</tr>";
}
echo "</table>";

mysql_close($con);
?>


</BODY>
</HTML>
Avatar billede w13 Novice
21. juni 2007 - 23:54 #4
Prøv at køre din php direkte fra dens adresse, om se om den kan. Hvis en PHP-/ASP-side laver fejl, når den køres med Ajax, er det nemlig ikke til at se. Outputtet vil, som i dit tilfælde, bare være blankt!
Avatar billede w13 Novice
21. juni 2007 - 23:56 #5
HAR du i øvrigt en database og HAR du rigtigt udfyldt:
$con = mysql_connect('localhost', 'xxx', 'xxx');
Avatar billede roenving Novice
22. juni 2007 - 01:22 #6
>>l_otto

-- er du ikke så garvet en bruger, at du ved at det absolut er forbudt at fordoble spørgsmål ?-)
Avatar billede l_otto Nybegynder
22. juni 2007 - 08:08 #7
når jeg kører getyser.php fejler den ikke.. jeg har bare sat xxx i steder for min password.

roeving. jeg har lukket det andet sprg, før jeg lavede det her:-)
Avatar billede thesurfer Nybegynder
22. juni 2007 - 10:14 #8
l_otto> Har du prøvet at indlæse adressen?: getuser.php?q=15

Hvis ja, og der ikke sker noget, prøv at udskrive din SQL streng:

sql="SELECT * FROM tilmelding WHERE id = '".$q."'";
echo sql;
Avatar billede thesurfer Nybegynder
22. juni 2007 - 10:19 #9
Problemet med koden er, at hvis du prøver på at hente et id der ikke findes, får du ikke at vide, at det ikke findes..

En mulig rettelse:

$i = 0;
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['fornavn'] . "</td>";
echo "<td>" . $row['mobiltlf'] . "</td>";
echo "<td>" . $row['aftentlf'] . "</td>";
echo "</tr>";
i++;
}

if ($i == 0)
{
// der er ikke udskrevet noget:
echo "<tr><td colspan=3>ingen poster fundet</td></tr>
}

echo "</table>";

mysql_close($con);
?>


</BODY>
</HTML>
Avatar billede olebole Juniormester
25. juni 2007 - 15:01 #10
<ole>

- og så er det et meget alvorligt problem, at w3schools.com ikke har den fjerneste anelse om, hvad AJAX er - eller hvordan det virker og skal anvendes!

Når man bruger AJAX, sendes forespørgslen _aldrig_ som GET ... _altid_ som POST.

Dernæst er hele idéen med AJAX at udveksle 'rå' data mellem klient og server. Man formaterer derfor _aldrig_ data som HTML på serveren.
Data returneres i XML- eller JSON-format til klienten. Her oprettes HTML-elementer med DOM - hvorefter disse fyldes med data og indsættes i dokumentet.

Umiddelbart virker AJAX ganske enkelt og let at have med at gøre, men sandheden er, at det nok er det mest komplekse og langhårede, man overhovedet kan kode til en browser. Faldgruberne er rigtig mange og desværre ret dybe!

Faktisk er det så kompliceret, at der kun er ganske få håndfulde kodere på WWW, der koder brugbar AJAX. Goggle's AJAX-powered applikationer er således nogle af de ganske få, der er kodet ordentligt.
Prøv at åbne din Task Manager og hold øje med, hvor skræmmende store mængder hukommelse, der forsvinder ned i halsen på IE, hvergang et AJAX-kald foretages i en ikke-Google applikation ... og ofte frigives hukommelsen ikke engang ved sideskift.

Da det er så ganske få, der kan skrive en AJAX-applikation, findes der desværre heller ikke brugbare AJAX-tutorials på WWW ... i hvertfald ikke nogen, jeg er vidende om  :o|

/mvh
</bole>
Avatar billede l_otto Nybegynder
26. juni 2007 - 22:44 #11
Der er et id 15 men den viser altså ikke noget...

Men hvad gør jeg så, for jeg skal bruge det til at løse dette sprg

http://www.eksperten.dk/spm/784338
Avatar billede olebole Juniormester
27. juni 2007 - 10:51 #12
Hvis PHP-koden (21/06-2007 22:54:31) ikke virker, har du ikke et felt med id'et 15 - eller du prøver at forbinde til en forkert DB - eller en forkert tabel. Slå fejlmeldinger _alle_ til i PHP ... det virker, somom de er slået fra. Desuden bør du naturligvis prøve at hjælpe dig selv ved at udskrive evt. MySQL-fejl:
    $result = mysql_query($sql) or die (mysql_error());

Men din fremgangsmåde har stadig intet med AJAX at gøre ... AJAX er noget helt andet  =)
Avatar billede fennec Nybegynder
28. juni 2007 - 09:37 #13
olebole >>
Du har før nævnt at man ikke bruger AJAX rigtigt, og som du også nævner findes der ikke nogle ordentlige tut på nette (jeg har heller ikke kunne finde nogen). Mit ? er derfor, hvor meget du kender til den rigtige metode, og vil også opfordre dig til at lave en artikel om emnet. Selv de mest simple eksempler vil være nok, da ingen af os andre har en ide om, hvor vi overhoved skal starte.

Det bedste sted i DK at få rette folks (mis)brug af AJAX er her på E, inden de overhoved begynder at bruge det forkert. Man kan jo lige så godt lære den rigtige metode fra starten :o)

Håber det er noget du vil overveje, og jeg vil i hvertfald se frem til det.
Avatar billede olebole Juniormester
28. juni 2007 - 13:05 #14
Jeg begyndte at skrive en artikel om en XMLHttpRequest-wrapper, men indså hurtigt, at jeg var nødt til at skrive betydeligt mere. Det er foreløbigt blevet til fire halvfærdige artikler - og det ender nok med et par mere i serien.

Jeg er definitivt færdig med at skrive artikler på Eksperten. Interface'et til artikelskrivning er så elendigt - og har været det siden begyndelsen af E's artikler - at det er en hån mod folk, der ønsker at levere gratis indhold til sitet. Vi er flere, der har brokket os over det i årevis - også overfor E's administration - uden andet resultat end at få Admins afkølede natpotte ned ad nakken!

Derfor har jeg anskaffet www.dengodekode.dk , som nok begynder at blive lidt interessant hen på eftersommeren  :)
Avatar billede fennec Nybegynder
28. juni 2007 - 13:57 #15
Den er hermed bookmarked. Glæder mig til at se hvad du disker op med. Det plejer jo at være interesant :o)
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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