AJAX Probleme
Tobias Otto
- javascript
Hallo ich lasse mit ajax eine php datei ausführen und danach mit include eine php datei laden.
problem ist, dass bei der include php datei nur ein teil ausgegeben wird. wenn ich in der include php datei in der ersten zeile das "<table> " wegmach wird die datei komischerweise komplett geladen. Also muss es an dem wort <table> liegen.
aber warum??
// diese datei wird include geladen
echo "
<table style='font-size: 10px;'> <---------------- ohne diese Zeile funktioniert es ohne probs
<tr>
<td style='background: rgb(210,210,210); padding: 2px; '>
<b>Attributbezeichnung</b>
</td>
<td style='background: rgb(210,210,210); padding: 2px; '>
<b>Preis</b>
</td>
<td style='background: rgb(210,210,210); padding: 2px;' >
<b>Menge</b>
</td>
<td style='background: rgb(210,210,210); padding: 2px;'>
<b>Lieferumfang</b>
</td>
<td>
</td>
</tr>
<form name='attributadd'>
<tr>
<td>
<input type='text' name='attributbezeichnung' style='width: 200px; border: solid 1px rgb(150,150,150);'/>
</td>
<td>
<input type='text' name='attributpreis' style='width: 50px; border: solid 1px rgb(150,150,150);'/>
</td>
<td>
<input type='text' name='attributmenge' style='width: 50px; border: solid 1px rgb(150,150,150);'/>
</td>
<td>
<input type='text' name='Lieferumfang' style='width: 250px; border: solid 1px rgb(150,150,150);'/>
</td>
<td>
<span onclick='attributadd2()' style='cursor: pointer;'><img src='../gfx/site/haken.gif' /></span>
</td>
</tr>
<input type='hidden' name='Artikel' value='$anr' />
<input type='hidden' name='Attributnr' value='$Attributnr' />
</form>
";
$atrres = mysql_query("SELECT * FROM artikel_attribut WHERE Artikel='$anr' ORDER BY Attributbezeichnung");
$style = "style='background: rgb(230,230,230); padding: 2px; '";
echo"
<form name='attributedit$row[Attributnr]'>
<tr>
<td $style >
<input type='text' name='attributbz' value='$row[Attributbezeichnung]' onfocus='attributfocus($row[Attributnr],this)' onblur='attributedit($row[Attributnr],this)' style='width: 200px; ' class='editattribut' />
</td>
<td $style>
<input type='text' name='attributpreis' value='$row[Preis]' onfocus='attributfocus($row[Attributnr],this)' onblur='attributedit($row[Attributnr],this)' style='width: 50px; ' class='editattribut'/>
</td>
<td $style>
<input type='text' name='attributmenge' value='$row[Menge]' onfocus='attributfocus($row[Attributnr],this)' onblur='attributedit($row[Attributnr],this)' style='width: 50px; ' class='editattribut'/>
</td>
<td $style>
<input type='text' name='attributlieferu' value='$row[Lieferumfang]' onfocus='attributfocus($row[Attributnr],this)' onblur='attributedit($row[Attributnr],this)' style='width: 230px; ' class='editattribut'/>
</td>
<td $style>
<span onclick='attributdel($row[Attributnr])' style='cursor: pointer;'><img src='../gfx/site/del.gif' /></span>
</td>
</tr>
</form>
";
}
// diese Datei wird von AJAX ausgeführt
require("db.inc.php");
$anr = $_REQUEST['artikel'];
$attribut = $_REQUEST['attributnr'];
$res = mysql_query("DELETE FROM artikel_attribut WHERE Artikel='$anr' AND Attributnr='$attribut' ;",$db);
if($res) {
include("attribut.php");
}
// AJAX
function attributdel(i) {
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
http_request = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}
http_request.onreadystatechange= attributdel2;
http_request.open("GET", "attributdel.php?attributnr=" + i + "&artikel=" + document.forms.attributadd.Artikel.value );
http_request.send(null);
}
function attributdel2() {
if (http_request.readyState == 4) {
var sh = document.getElementById("attribut");
sh.innerHTML = http_request.responseText;
}
}
Hellihello Tobias,
mMn ist das kein Ajax-Problem, sondern ein PHP Problem.
Deinen Code könntest du erleichtern, indem du die Styleangaben in ein externes Stylesheet auslagerst (und sei es nur zu Testzwecken).
Dann baust du die Tabelle kleinteilig als Testtabelle auf und erweiterst sie solange, bis der Fehler auftaucht oder eben nicht.
<table style='font-size: 10px;'> <---------------- ohne diese
Diese Zeile scheint allerdings erstmal o.k. so. Der Rest aber scheint mir für die Isolation dieses Problem irrelevant; deshalb hast Du bei den Massen an Quelltext vielleicht auch bisher keine Antwort erhalten.
Gruß,
frankx
Hallo Tobias,
Die HTML-Elemente sind wohl falsch verschachtelt:
// diese datei wird include geladen
echo "
[code lang=html]<table style='font-size: 10px;'> <-- ohne diese Zeile funktioniert es ohne probs -->
<tr>[...]
</tr>
<form name='attributadd'>
<tr>[...]
</tr>
<input type='hidden' name='Artikel' value='$anr' />
<input type='hidden' name='Attributnr' value='$Attributnr' />
</form>
> ";[/code]
Zwischen zwei Tabellenzeilen <tr> darf kein Formular stehen, sagt jedenfalls [Der Martin hier](http://forum.de.selfhtml.org/archiv/2007/9/t159397/#m1036928).
Gruß, Don P