Ajax

hallo liebe helfer!!

ich habe ein ajax Script zu Testzwecken erstellt, doch bekomme ich keine Ausgabe.
Hier erstmal Teile des Codes:

HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
 "http://www.w3.org/TR/html4/frameset.dtd">

<html>
<head>
<title>Bilder</title>
<meta charset="utf-8" />
<script  src="ajax.js"></script>
<script type="text/javascript">
<!--
sendData("2011","inge","5");
//-->
</script>
</head>
<body>
<div id="diashow"></div>
</body>
</html>

javascript:

var request = false;

function sendData(j,f,p)
{
  if(window.XMLHttpRequest)
  request = new XMLHttpRequest();
  else if(window.ActiveXObject)
  {
    try
    {
      request = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e)
    {
      try
      {
        request = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch(e){}
    }
  }

  if(!request)
  {
    alert("Fehler: Es konnte kein Reqest erzeugt werden.");
    return false;
  }
  else
  {
    var url = "ajax.php";

    request.open("post", url, true);

    request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

    request.send("j="+j+"&f="+f+"&p="+p);

    request.onreadystatechange = draw;
  }
}

function draw()
{
  switch(request.readyState)
  {
    case 4:
    if(request.status == 200)
    {
      var xmlDoc = request.responseXML;
      var bild = getElementsByTagName("bild")[0].firstChild.nodeValue;
      var diashow = document.getElementById("diashow");

      diashow.innerHTML = bild; 
    }
    break;

    default:
    break;
  }
}

Nun die PHP-Datei, an die der Request geschickt wird:

<?php
include("../../includen/verbindung.php");
header("Content-Type: text/xml; charset=utf-8");

$j=$_POST["j"];
$f=$_POST["f"];
$pos=$_POST["p"];

$abfrage=mysql_query("SELECT name FROM bilder WHERE jahr = '$j' and fotograf = '$f' and WHERE name = '%$pos' and groesse = 'klein' ORDER BY id LIMIT 1");
$bilder=mysql_fetch_array($abfrage);

echo "<?xml version=\"1.0\" encoding=\"utf-8\" ?>";
echo "<formatname><bild><img src=\"".$bilder["name"]."\"></bild></formatname>";
?>

Bitte helft mir ich finde den Fehler nicht.
Danke im Voraus :slight_smile:

lg
Martin

Bitte zeige uns ein Onlinebeispiel.
Des Weiteren wäre es wohl empfehlenswerter, das nicht immer wieder neu zu implementieren, sondern auf fertige Libraries wie jQuery setzen.
Ansonsten mal in der Firebug o.ä. Konsole gucken…

so ich habe das jetzt mal hochgeladen:

http://martinlagemann.bplaced.de/test/

hoffentlich kann man damit besser helfen…

lg

Dein nachgeladenes Script gibt dir

[quote]Warning: include() [function.include]: open_basedir restriction in effect. File(…/…/includen/verbindung.php) is not within the allowed path(s): (/users/martinlagemann/temp:/users/martinlagemann/www) in /users/martinlagemann/www/test/ajax.php on line 2

Warning: include(…/…/includen/verbindung.php) [function.include]: failed to open stream: Operation not permitted in /users/martinlagemann/www/test/ajax.php on line 2

Warning: include() [function.include]: Failed opening ‘…/…/includen/verbindung.php’ for inclusion (include_path=’.’) in /users/martinlagemann/www/test/ajax.php on line 2[/quote]
zurück.

https://www.google.de/search?q=open_basedir+restriction+in+effect

Hallo,

“Debug” durch Firefox

Gruss fishi

ok das mit include() war nur ein kleiner fehler, den ich jetzt behoben habe (ich habe das ja nur testweise hochgeladen)

und du dem nicht definierten var bild = getElementsByTagName(“bild”)[0].firstChild.nodeValue;

was ist denn daran falsch, sorry ich bin anfänger in ajax …

Obiger Quelltext enthält natürlich noch weitere formale und inhaltliche grobe Schnitzer:

  1. Da die DTD für frameset angegeben ist, darf da auch kein body stehen, sondern ein
    frameset - nichts anzuzeigen ist da völlig in Ordnung.
  2. Wird andererseits kein frameset verwendet, so gehört der Inhalt schon statisch in die Seite.
    So jedenfalls ist es vollkommen korrekt, daß kein Inhalt angezeigt wird - steht ja auch keiner
    drin. Mit java-script kann man zwar unter Umständen die Ergonomie einer Seite für bestimmte
    Nutzergruppen verbessern, aber keine Inhalte ändern - das wäre dann ein konzeptioneller
    Fehler, da nur das Inhalt ist, was auch ohne js angezeigt wird ;o)
  3. sowas wie ist für HTML4 natürlich auch falsch. Also erstmal das /
    hinten und dann gibt es auch kein Attribut charset
  4. Beim Element script ist die Angabe des Attributes type erforderlich, selbst wenn das
    Darstellungsprogramm bereit ist, irgendeine Skriptsprache zu interpretieren, was ja oft nicht
    der Fall sein mag, wenn der Nutzer das unterbunden hat, so braucht solch ein Programm
    Dateien mit unbekannten/undefinierten Skripten gar nicht erst zu laden…

Es stellt sich also weniger die Frage, warum das nicht funktioniert, schon eher, warum da
überhaupt was passiert oder passieren sollte ;o)