Hallo tutorials.de Community.
Ich habe ein kleines Problem mit AJAX. Ich habe ein Formular, in dem der Benutzer Eingaben tätigen kann. Wird das Formular das erste mal abgeschickt ist alles okay. Verändert er das Formular jedoch und schickt es dann erneut ab, dann scheint es so, als wenn er die Daten aus dem Cache beziehen würde, jedoch habe ich bereits mit den headern Befehlen in der PHP Datei den Server Cache ausgetsellt. Woran liegt es also, das mein Skript nicht funktioniert. Anbei beide Skripts (nur die wichtigens Ausschnitte).
AJAX Part:
PHP Part:
Ich hoffe ihr könnt mir helfen.
LG
LuvLuv
Ich habe ein kleines Problem mit AJAX. Ich habe ein Formular, in dem der Benutzer Eingaben tätigen kann. Wird das Formular das erste mal abgeschickt ist alles okay. Verändert er das Formular jedoch und schickt es dann erneut ab, dann scheint es so, als wenn er die Daten aus dem Cache beziehen würde, jedoch habe ich bereits mit den headern Befehlen in der PHP Datei den Server Cache ausgetsellt. Woran liegt es also, das mein Skript nicht funktioniert. Anbei beide Skripts (nur die wichtigens Ausschnitte).
AJAX Part:
HTML:
<script type="text/javascript"><!--
var http = null;
function put_in_cart(produkt,action) {
if (window.XMLHttpRequest) {
http = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
http = new ActiveXObject("Microsoft.XMLHTTP");
}
if (http != null) {
if(action == "ins") {
url = "put_in_cart_ajax.php?prod="+produkt;
}
else if(action == "del") {
url = "put_in_cart_ajax.php?del=true&prod_id="+produkt;
}
else if(action == "stahl") {
arbeitspl = document.getElementById("apcount").value;
floating = document.getElementById("floatcount").value;
if(arbeitspl == "") {
arbeitspl = "0";
}
if(floating == "") {
floating = "0";
}
if(document.navimat.test.checked) {
testing = "true";
//alert("Ist ausgewählt. Wert ist: "+testing);
}
else {
testing = "false";
//alert("Ist nicht ausgewählt. Wert ist: "+testing);
}
stahlpreis = document.getElementById("netto").value;
url = "put_in_cart_ajax.php?prod="+produkt+"&a="+arbeitspl+"&f="+floating+"&gesPreis="+stahlpreis+"&test="+testing;
}
http.open("GET", url, true);
http.onreadystatechange = function() { ausgeben(action,produkt); };
http.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
http.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT" );
http.send(null);
}
}
function ausgeben(action,produkt) {
if (http.readyState == 1 || http.readyState == 2 || http.readyState == 3) {
if(action == "del") {
document.getElementById("Ausgabe").innerHTML = "<img src='images/cart.gif' style='float:left;margin-right:3px;' /><b>Produkt wird entfernt</b><br /><img src='images/ajax-loader.gif' />";
}
if(action == "ins") {
document.getElementById("Ausgabe").innerHTML = "<img src='images/cart.gif' style='float:left;margin-right:3px;' /><b>Produkt wird hinzugefügt</b><br /><img src='images/ajax-loader.gif' />";
}
if(action == "del" && produkt == "all") {
document.getElementById("Ausgabe").innerHTML = "<img src='images/cart.gif' style='float:left;margin-right:3px;' /><b>Produkte werden entfernt</b><br /><img src='images/ajax-loader.gif' />";
}
if(action == "stahl") {
document.getElementById("Ausgabe").innerHTML = "<img src='images/cart.gif' style='float:left;margin-right:3px;' /><b>Produkt wird hinzugefügt</b><br /><img src='images/ajax-loader.gif' />";
}
}
if (http.readyState == 4) {
if(http.status != 200) {
alert("Es ist ein Fehler aufgetreten"+http.status);
}
else {
xml = http.responseXML;
laenge = xml.getElementsByTagName("prod").length;
if(laenge == 0) {
text = '<img src="images/cart.gif" style="float:left;margin-right:3px;" onmousedown="dragstart(this),draginit()" /><b>Ihr Warenkorb enthält:</b><br />Keine Produkte abgelegt! <br /><span class="cart_font">(Warenkorb lässt sich mit der Maus bewegen)</span>';
}
else {
test = new Array();
test2 = new Array();
test3 = new Array();
text = "<table border='0'>";
text += "<tr><td colspan='3'><img src='images/cart.gif' style='float:left;margin-right:3px;' /><a href='javascript:open_window()'><img src='images/printer.gif' border='0' align='right' /></a><b>Ihr Warenkorb enthält:</b></td></tr>";
for(i=0;i<laenge;i++) {
text += "<tr>";
test[i] = xml.getElementsByTagName("prod")[i].firstChild.nodeValue;
text = text+"<td class='cart_font' width='50%'>"+test[i]+"</td>";
test2[i] = xml.getElementsByTagName("preis")[i].firstChild.nodeValue;
text = text+"<td class='cart_font' width='25%'>"+test2[i]+" €</td>";
test3[i] = xml.getElementsByTagName("prodID")[i].firstChild.nodeValue;
text = text+"<td width='25%'><a href='javascript:put_in_cart(\""+test3[i]+"\",\"del\")'><img src='images/del2.gif' border='0' /></a></td>";
text += "</tr>";
}
text += "<tr><td colspan='3'><hr /></td></tr>";
gesPreis = xml.getElementsByTagName("gesamtPreis")[0].firstChild.nodeValue;
text += "<tr><td class='cart_font' colspan='3'>Gesamtpreis (Netto): "+gesPreis+" €</td></tr>";
gesPreisNetto = xml.getElementsByTagName("gesamtPreisNetto")[0].firstChild.nodeValue;
text += "<tr><td class='cart_font' colspan='3'>Gesamtpreis (Brutto): "+gesPreisNetto+" €</td></tr>";
text += "<tr><td colspan='3'><hr /></td></tr>";
text += "<tr><td colspan='3'><table><tr><td><a href='javascript:put_in_cart(\"all\",\"del\")'><img src='images/del.gif' border='0' /></a></td>";
text += "<td><a href='cash_point.php'><img src='images/weiter.gif' border='0' /></a></td></tr></td></table>";
text += "<tr><td colspan='3'><span class='cart_font'>(Warenkorb lässt sich mit der Maus bewegen)</span></td></tr>";
text += "</table>";
}
document.getElementById("Ausgabe").innerHTML = text;
}
}
}
PHP Part:
PHP:
<?php
session_start();
header("Pragma: no-cache");
header("Cache-Control: no-store, no-cache, max-age=0, must-revalidate");
header('Content-Type: application/xml');
$sID = session_id();
flush();
sleep ( 3 );
function NettoInBrutto($arg) {
$arg = 119*$arg/100;
$arg = sprintf("%01.2f",$arg);
return $arg;
}
$prod = $_GET['prod'];
$del = $_GET['del'];
$prod_id = $_GET['prod_id'];
$stahlwissenZusatz = "";
$stahlwissenZusatzpreis = "";
if($_GET['test']) {
$stahlwissenZusatz = "Arbeitsplätze: $_GET[a], Floating: $_GET[f]";
$stahlwissenZusatzpreis = "$_GET[gesPreis]";
if($_GET['test'] == "true") {
$stahlwissenZusatz = "Testinstallation";
}
}
echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>";
mysql_connect("localhost","root","");
mysql_select_db("shopping_cart");
if($del != "") {
if($prod_id == "all") {
$SQL_DEL = "DELETE FROM cart WHERE sID = '$sID'";
$SQL_RES = mysql_query($SQL_DEL);
}
else {
$SQL_DEL = "DELETE FROM cart WHERE pID = '$prod_id' AND sID = '$sID'";
$SQL_RES = mysql_query($SQL_DEL);
}
}
if($prod != "") {
$SQL_NUM = "SELECT cID FROM cart WHERE pID = '$prod' AND sID = '$sID'";
$SQL_RES = mysql_query($SQL_NUM);
$SQL_NUM_ROW = mysql_num_rows($SQL_RES);
if($SQL_NUM_ROW == 0) {
$SQL_INS = "INSERT INTO `cart` (`cID` ,`pID` ,`sID` ,`zusatz`, `zusatz_preis`)VALUES (NULL , '$prod', '$sID', '$stahlwissenZusatz', '$stahlwissenZusatzpreis')";
$RES_INS = mysql_query($SQL_INS) or die(mysql_error());
}
}
$SQL = "SELECT * FROM cart,products WHERE sID = '$sID' AND pID = prID ORDER BY cID";
$RES = mysql_query($SQL);
$NUM = mysql_num_rows($RES);
echo "<cart>";
$gesPreis = 0;
while($ROW = mysql_fetch_assoc($RES)) {
if(!$ROW['zusatz_preis']) {
$p = $ROW['prPreis'];
}
else {
$p = $ROW['zusatz_preis'];
}
echo "<prodID>$ROW[pID]</prodID>";
echo "<prod>$ROW[prName] $ROW[zusatz]</prod>";
echo "<preis>".$p."</preis>";
$gesPreis = $gesPreis+$p;
}
echo "<gesamtPreis>$gesPreis</gesamtPreis>";
$gesPreisNetto = NettoInBrutto($gesPreis);
echo "<gesamtPreisNetto>$gesPreisNetto</gesamtPreisNetto>";
//echo "<anzahlArtikel>$NUM</anzahlArtikel>";
echo "</cart>";
?>
Ich hoffe ihr könnt mir helfen.
LG
LuvLuv