Seltsames Verhalten von Firefox und Internetexplorer

Ist ja richtig, trotzdem sind es zwei Antwortheader(zumindest habe ich noch keinen Anfrageheader gesehen, der sich selber antwortet...:) ), intressant wäre natürlich auch die Antwort vom Server.

Ich kann natürlich tolle Geschichten in den Header schreiben, aber macht das Sinn? Ich benutze das "X-Requested-With" um wie du schon schreibst einen Ajaxrequest zu erkennen. Was z.B. sehr schön ist um in einer Funktion unterschiedliche Ausgaben zu handeln. Mit dieser Methodik lässt sich schön eine Barrierefreiheit umsetzen.

Hinzu kommt das Accept so kann ich erkennen, was die Anfrage als Antwort erwartet, z.B. json, xml oder reines html oder oder. Andernfalls also wird ein falschen Format zurückgegeben gibt es einen Fehler, was dann ja auch in meinen Augen Sinn macht.

Weiterhin sind von Vorteil "Accept-Language", "Host", "Referer", "User-Agent" will man z.B. eine Session erneuern oder eine csrf Protection einsetzen oder man hat einen xss Filter um Cross Site Scripting zu verhindern.

Ich kann nur raten ein JS Framework einzusetzen, das spart Zeit und Nerven und das Tolle ist es funktioniert auch.

Aber zurück zum Thema, ich denke hier gibt es mehreere Probleme.

Funktionierte gestern nicht. Er gab mir immer meine Fehlermeldung aus, dass die Datei das falsche Format habe.

Wei wird die CSV eingelesen?

Wenn ich bei der Datenübersicht auf den Knopf zum Speichern klicke hängt sich die Website auf und ich kann nirgendwo mehr klicken,

hört sich für mich eindeutig nach eine JS Fehler an. z.B. eine Funktion die vorm DOM aufgerufen wird.
 
Zuletzt bearbeitet von einem Moderator:
Oh tut mir leid.
Hier nochmal beide:

Antwort-Header

Accept-Ranges bytes
Content-Length 1242
Content-Type application/javascript
Date Mon, 06 Feb 2012 08:42:08 GMT
Etag "20000000262e2-4da-4b00863aebe90"
Last-Modified Mon, 24 Oct 2011 09:53:05 GMT
Server Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1

Anfrage-Header
Accept */*
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Encoding gzip, deflate
Accept-Language de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Connection keep-alive
Host localhost
Referer http://localhost/labor/index.php
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1
 
Dein Antwort Header ist wahrscheinlich zu kurz. Wie setzt du in den? Ein Beispiel wäre so.

PHP:
header('Content-length: ' . strlen('mein ganz langer String den ich aus der CSV eingelesen habe'));

außerdem willst du bestimmt kein Js zurückgegeben, also fehlt noch die Header Anweisung.

z.B.
PHP:
 header('Content-type:  text/html; charset=UTF-8' );
 
Zuletzt bearbeitet von einem Moderator:
Oke stimmt. Aber muss ich den das immer angeben? Bisher habe ich das nur gemacht, wenn ich Bilder mit PHP erstellt habe, ansonsten nirgendwo und es hat trotzdem immer gepasst.
 
So habe selber noch mal gelesen, also es ist eine "Kann" Option. Zumindest gibt es aber auch kein "HTTP/1.1 200 OK" zurück. Also solltest du mal alles überprüfen.

1. stimmt die Anfrage, wird sie vom Php Skript entgegen genommen
2. Wird die Anfrage bearbeitet und wirft keine Fehler?
3. stimmt die Ausgabe?

Aber erkläre doch mal, was du zurück gibst usw. poste doch mal die Ausgabe vom Php Skript, muß ja nicht vollständig sein. Ansonsten bleibt uns hier nur die Glaskugel....:)
 
Zuletzt bearbeitet von einem Moderator:
Oke ich bin leider kein Profi aber eine "Kann" Option ist eine Option die enthalten sein kann oder?

Zu den Frage:

Es wirft keine Fehler und es wird auch richtig verarbeitet. Mein Problem ist ja, dass es nicht sofort verarbeitet wird, sondern erst wenn ich auf den Aktuallisieren-Button des Firefox klicke.

Zur Erinnerung nochmal: Es betrifft nur den Firefox, der InternetExplorer macht seinen Job hier ausnahmsweiße super.

Und hier Code:

PHP:
class CSVInterfaceList
{
	public $Probenname;
	public $Probennummer;
	public $InterfacePairArray;
}


/**
 * <b>CSVInterfacePair</b>
 * <p>Enthält zwei Eigenschaften:
 * <table><tr><th>$ID</th><th>$Value</th></tr>
 * <tr>
 * <td>Die ID</td>
 * <td>Der Wert zu dieser ID</td>
 * </tr>
 * </table>
 * @author fbfeix
 *
 */
class CSVInterfacePair
{
	public $ID;
	public $Value;
}


class CSVInterface
{

	protected $csv_array; // 2D-Array: 1. Dimension: Zeile, 2. Dimension: Spalte

	/**
	 * <h3>Ein Array, dass alle Verfügbaren IDs enthält.</h3>
	 * </p>Der Index des jeweiligen Elements ist dabei die Wessling ID.</p>
	 * <p>Der Wert ist der Rohrdorfer Name wie er in der Tabelle in MySQL steht.</p>
	 * @var geschütztes Array(<b>WesslingID</b> | <b>Rohrdorfer Name</b>)
	 */
	protected $uebersetzungs_array; //index: Wessling-Id, Wert: Rohrdorfer Name



	/**
	 * Konstruktor der Klasse 'CSVInterface'.
	 * Initialisiert das Übersetzungsarray
	 * @return boolean
	 */
	public function __construct()
	{

		//Mit MySQL verbinden
		$con = mysql_connect("localhost", "root", "");
		if (!$con)
		return false;

		//Datenbank öffnen
		$select = mysql_select_db("labor");
		if (!select)
		return false;

		//markiere genaue Tabelle und Spaltenname
		$sql = "SELECT Rohrdorfer_Bezeichnung, wessling_id FROM sbs_werozuordnung_tbl";

		//Öffnen der Tabelle und Ergebnis auswerten
		$result = mysql_query($sql);
		if($result)
		{
			while($row = mysql_fetch_array($result))
			{
				$this->uebersetzungs_array[$row['wessling_id']] = $row['Rohrdorfer_Bezeichnung'];
			}
				
		}
		else
		echo "Beim anlegen eines Übersetzungsarrays ist ein Fehler aufgetreten";

		//Datenbank schließen
		mysql_close($con);
	}



	private function read_csv($path)
	{

		//prüft den Pfad
		if($path == "" || $path == null)
		return false; //Pfad ist leer, Funktion beenden

		//Ist die Datei auf die der Pfad verweist vorhanden?
		if(!file_exists($path))
		{
			echo "Datei existiert nicht";
			return false; //Datei ist nicht vorhanden: Funktion beenden
		}

		$fp = fopen($path, 'r');
		if($fp == false)
		{
			return false;
		}

		//Zählvariable
		$aktuelleZeilenNummer = 0;

		while(! feof($fp))
		{
			$zeile = fgetcsv($fp, 4096, ';');

			if($aktuelleZeilenNummer == 0) //Probennummern lesen
			{
				for($i = 4; $i < count($zeile); $i++)
				{
					$InterfaceElement = new CSVInterfaceList();
					$InterfaceElement->Probennummer = $zeile[$i];
					$this->csv_array[-4 + $i] = $InterfaceElement;
				}
			}
			else if($aktuelleZeilenNummer == 1) //Probennamen lesen
			{
				for($i = 4; $i < count($zeile); $i++)
				{
					$this->csv_array[-4 + $i]->Probenname = $zeile[$i];
				}
			}
			else //Probenwerte lesen
			{
				$zeile = $this->ReplaceNull($zeile);
				for($i = 4; $i < count($zeile); $i++)
				{
					if($zeile[1] != "" && $zeile[$i] != "")
					{
						$Pair = new CSVInterfacePair();
						$Pair->ID = $zeile[1];
						$Pair->Value = $zeile[$i];

						$this->csv_array[-4 + $i]->InterfacePairArray[] = $Pair;
					}

				}

			}
			//Zählvariable um 1 erhöhen
			$aktuelleZeilenNummer++;
		}


		fclose($fp);

	}



	/**
	 * <b>CSV_IntoTmpDB()</b>
	 * <p>
	 * @return boolean
	 */
	private function CSV_IntoTmpDB()
	{



		$con = mysql_connect("localhost", "root", "");
		if (!$con)
		return false;

		$select = mysql_select_db("labor");
		if (!select)
		return false;


		//_____________________________________________________
		//#####################################################
		//Tmp-Datenbank-tabellen leeren (daten_tbl, proben_tbl)

		$sql = "TRUNCATE TABLE `sbs_daten_tbl` ";

		$result = mysql_query($sql);

		if(!result)
		die('Ungültige Abfrage: ' . mysql_error());

		$sql = "TRUNCATE TABLE `sbs_proben_tbl` ";

		$result = mysql_query($sql);

		if(!result)
		die('Ungültige Abfrage: ' . mysql_error());
		//#####################################################
		//#####################################################



		//_____________________________________________________
		//#####################################################
		//neue Daten in Tmp-Datenbank-tabellen einfügen (daten_tbl, proben_tbl)



		//Tab sortiert nach den Proben
		echo '<div id="tabcontrol"><ul>';

		for($i = 0; $i < count($this->csv_array); $i++)
		{

			if($this->csv_array[$i]->Probenname != "" || $this->csv_array[$i]->Probennummer != "")
			{
				echo '<li><a href="#tabs-'.$this->csv_array[$i]->Probennummer.'">'.$this->csv_array[$i]->Probenname.' ('.$this->csv_array[$i]->Probennummer.')</a></li>';
			}
		}

		echo '</ul>';

		for($i = 0; $i < count($this->csv_array); $i++)
		{

			if($this->csv_array[$i]->Probenname != "" || $this->csv_array[$i]->Probennummer != "")
			{
				//Start des Tab-Contents
				echo '<div id="tabs-'.$this->csv_array[$i]->Probennummer.'">';
				echo '<form name="form_'.$this->csv_array[$i]->Probennummer.'" id="form_'.$this->csv_array[$i]->Probennummer.'" action="templates/insertdata.php" method="post">';

				echo '<table>';
				echo '<tr><th style="width: 50%; ">Name</th><th style="width: 50%; ">Wert</th></tr>';

				$sql = "INSERT INTO proben_tbl (proben_nummer, proben_name) VALUES (".$this->csv_array[$i]->Probennummer.",'".$this->csv_array[$i]->Probenname."')";

// 				echo "<br />".$sql."<br />";
				$result = mysql_query($sql);

				if(!result)
				die('Ungültige Abfrage: ' . mysql_error());

				$sql = "INSERT INTO daten_tbl (value, werozuordnung_id, daten_proben_id) VALUES (".
				$this->csv_array[$i]->InterfacePairArray[0]->Value.
						",'".$this->csv_array[$i]->InterfacePairArray[0]->ID.
						"',".mysql_insert_id().")";

				for($j = 0; $j < count($this->csv_array[$i]->InterfacePairArray); $j++)
				{
					$sql .= ", (".$this->csv_array[$i]->InterfacePairArray[$j]->Value.
								",'".$this->csv_array[$i]->InterfacePairArray[$j]->ID.
								"',".mysql_insert_id().")";

					
					//liste erzeugen:
					if($this->uebersetzungs_array[$this->csv_array[$i]->InterfacePairArray[$j]->ID])
					{
					echo '<tr><td style="border-bottom: 1px solid #ddd;">'.$this->uebersetzungs_array[$this->csv_array[$i]->InterfacePairArray[$j]->ID].'</td>';
					echo '<td style="border-bottom: 1px solid #ddd;"><input class="tablecontrollinginput" type="text" name="'.
					$this->csv_array[$i]->InterfacePairArray[$j]->ID."of".$this->csv_array[$i]->Probennummer.
								'" value="'.
					$this->csv_array[$i]->InterfacePairArray[$j]->Value.
								'"/></td></tr>'."\n";
					}
				}
				
// 				echo "<br />".$sql."<br />";

				//Probennummer, -name und -bemerkung
				echo "<tr><td><br /></td><td><br /></td></tr>";
				echo '<tr><td>Probennummer</td><td><input type="text" name="probennummer" class="tablecontrollinginput" value="'.$this->csv_array[$i]->Probennummer.'" /></td></tr>';
				echo '<tr><td>Probenname</td><td><input type="text" name="probenname" class="tablecontrollinginput" value="'.$this->csv_array[$i]->Probenname.'" /></td></tr>';
				echo '<tr><td>Bemerkung</td><td><input type="text" name="probenbemerkung" class="tablecontrollinginput"  /></td></tr>';

				echo "</table>";
				//Ende des Tab-Contents

				echo '</form>';
				echo '<div style="min-height: 40px;" id="Con_for_Btn_'.$this->csv_array[$i]->Probennummer.'">';

				echo '<button name="Button'.$this->csv_array[$i]->Probennummer.'" style="float: right; padding: 4px 0px;" onclick="SetValues(document.getElementById('."'" . 'form_'.$this->csv_array[$i]->Probennummer."'),'tabs-".$this->csv_array[$i]->Probennummer."')".'">In Datenbank eintragen</button>';
				echo '</div>';

				echo '</div>';

				$result = mysql_query($sql);

				if(!result)
				die('Ungültige Abfrage: ' . mysql_error());
			}
		}




		//#####################################################
		//#####################################################


		mysql_close($con);
	}

	private function CSV_IntoTmpDB2()
	{
		$con = mysql_connect("localhost", "root", "");
		if (!$con)
		return false;

		$select = mysql_select_db("labor");
		if (!select)
		return false;

		$sql = "INSERT INTO sbs_daten_tbl (value, werozuordnung_id) VALUES ";

		echo '<table>';
		echo '<tr><th style="width: 400px; ">Name</th><th style="width: 400px; ">Wert</th></tr>';

		for($i = 2; $i < count($this->csv_array); $i++)
		{
			for($j = 4; $j < count($this->csv_array[$i]); $j++) //beginnt bei der 5. Spalte
			{
				$this->csv_array[$i][$j] = str_replace(',', '.', $this->csv_array[$i][$j]);
// 				if($i > 2)
// 				{
// 					$this->csv_array[$i][$j] = str_replace('.', '', $this->csv_array[$i][$j]);
// 				}
				if($this->csv_array[$i][$j] != "" && $this->csv_array[$i][1] != "") //damit werden alle leeren Elemente entfernt bzw. nicht eingetragen
				{

					if($i +1 == count($this->csv_array))
					{
						if($sql != "INSERT INTO sbs_daten_tbl (value, werozuordnung_id) VALUES ")
						$sql .= ", (".$this->csv_array[$i][$j].", '".$this->csv_array[$i][1]."') ";
						else
						$sql .= "(".$this->csv_array[$i][$j].", '".$this->csv_array[$i][1]."') ";

						if($this->uebersetzungs_array[$this->csv_array[$i][1]]!= "")
						{
							echo '<tr><td style="border-bottom: 1px solid #ddd;">'.$this->uebersetzungs_array[$this->csv_array[$i][1]].'</td>';
							echo '<td style="border-bottom: 1px solid #ddd;"><input class="tablecontrollinginput" type="text" name="'.$this->csv_array[$i][1].'" value="'.$this->csv_array[$i][$j].'"/></td></tr>."\n"';
						}
					}
					else
					{
						if($sql != "INSERT INTO sbs_daten_tbl (value, werozuordnung_id) VALUES ")
						$sql .= ", (".$this->csv_array[$i][$j].", '".$this->csv_array[$i][1]."')";
						else
						$sql .= "(".$this->csv_array[$i][$j].", '".$this->csv_array[$i][1]."') ";
						if($this->uebersetzungs_array[$this->csv_array[$i][1]]!= "")
						{
							echo '<tr><td style="border-bottom: 1px solid #ddd;">'.$this->uebersetzungs_array[$this->csv_array[$i][1]].'</td>';
							echo '<td style="border-bottom: 1px solid #ddd;"><input class="tablecontrollinginput" type="text" name="'.$this->csv_array[$i][1].'" value="'.$this->csv_array[$i][$j].'"/></td></tr>'."\n";
						}
					}
						
				}

			}
		}

		echo '</table>';

		$result = mysql_query($sql);

		if(!result)
		die('Ungültige Abfrage: ' . mysql_error());


		mysql_close($con);

	}


	/**
	 * Löscht ein leeres Element in einem Array
	 * @param 1D-Array $zeile
	 * @return 1D-Array
	 */
	private function DeleteEmptyColumns($zeile)
	{
		for($i = 0; $i < count($zeile); $i++)
		{
			if($zeile[$i] != "")
			{
				$output[] = $zeile[$i];
			}
		}
		return $output;
	}

	private function ReplaceNull($zeile)
	{
		for($i = 0; $i < count($zeile); $i++)
		{
			if($zeile[$i] != "")
			{
				$output[$i] = str_replace('.', '', $zeile[$i]);
				$output[$i] = str_replace(',', '.', $output[$i]);
				$output1[$i] = str_replace(array('-/-', '<'), '', $output[$i]);
			}
		}
		return $output1;
	}

	public function ImportCSVintoTmp($path)
	{
		$this->read_csv($path);
		$this->CSV_IntoTmpDB();
		return true;
	}

	private function MoveImportedCSV()
	{

	}

	public function Import_TmpDB_intoDB()
	{

	}
}
 
Zuletzt bearbeitet:
Auf die Schnelle finde nirgends die Ausgabe? Der entsprechende teil vom Js wo du den Request holst fehlt auch.
 
Also wenn die Datei über Ajax übertragen wird, Dateiuploads über Ajax gehen ja und diese Datei drüben ankommt was sie auch tut denke ich.

Dann ist das Problem a) auf Serverseite zu suchen oder b) irgendwas läuft beim IE falsch. Einfach mal noch andere browser durchtesten.

Opera, Chrome, Safari, und mit dem IE Tester alle anderen Versionen vom IE. Da könntest schon einmal einschränken. Wenn es dann immer nur noch im FF geht ist es merkwürdig.
Sollte es nur im IE ( ich rede da von den älteren Versionen wie den 6er) nicht geht dann ist das Problem eindeutig dort zu suchen.

1 Mögliche Ursache wäre natürlich das der sich da mit dem Charset sich irgendwie verhaspelt und alles kaputt geht dadurch.
 
Also ich steige hier dann aus, die Infos sind einfach zu wenig. Erstelle doch mal ein Test case und poste mal den Link.
 
Zurück