Ajax + Formulareingabe, aktueller Inhalt kommt nicht an.

LuvLuv

Grünschnabel
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:
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
 
Moin,

woran es liegt, kann ich auch nicht entdecken.
Abhilfe sollte aber auf jeden Fall die Holzhammermethode schaffen:

Code:
http.open("GET", url+'&'+new Date().getTime(), true);

Damit wird garantiert nichts aus dem Cache geladen.
 
Danke, die sogenannten Holzhammer Methode hat gewirkt ;) Vielen Danke. Thread wird als erledigt markiert ;)

LG

LuvLuv
 

Neue Beiträge

Zurück