Firefox Problem, Formularelemente

WSXrr

Grünschnabel
Hallo, ich hab da ein riesen Problem, hoff ihr koennt mir diesbezueglich weiterhelfen.

Aufbau der Eingabe.
Eine Seite mit mehreren Eingabefeldern, in mitten dieser Seite befindet sich ein SELECT Objekt, bei onChange an diesem Objekt wird AJAX like eine Funktion namens sendRequest() aufgerufen, die einen Parameter an 'query.php' schickt, mit handleRequest() wird dann in einem <div> ein Formularelemete aufgebaut

Wenn ich diese Elemente nun ausfülle, und das Formular ausfülle und abschicke, und auf der Folgeseite ein print_r($_POST) mache, erhalt ich beim IE alle Variablen, beim FF fehlen mir leider sämtliche Formularelemente die über die 'query.php' aufgebaut werden.

vielen Dank im Voraus für Eure Hilfe.
 
Hi,

wenn die neuen Formularfelder korrekt eingebunden werden (z.B. über innerHTML) und mit name-Attributen ausgestattet sind, sollte es eigentlich problemlos funktionieren.

Um mehr sagen zu können, solltest du den fehlerhaften bzw. problematischen Code zeigen - als geparstes HTML-Dokument. Interessant ist auch, was genau query.php zurückliefert.

Ciao
Quaese
 
Hi, danke erstmal, der Response wird mit innerHTML eingebunden,
siehe Funktion handleResponse()

Hoffe du fangst etwas damit an, sind im Prinzip alle davon betroffenen Dinge dabei.

HTML:
	function sendRequest()
	{
			try 
			{
				req = window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP"); 
			} 	
			catch (e)
			{
				//Kein AJAX Support
			} 
			req.onreadystatechange = handleResponse;
			
			var ts = <?php echo $keyyy; ?>;
			var id = ts+''+document.eingabe.serviceid.options[document.eingabe.serviceid.selectedIndex].value;
			req.open('post', 'Dateien/query.php');
			req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			req.send('s='+ id);
	}

	function handleResponse()
	{
		if ((req.readyState == 4) && (req.status == 200))
		{
			try
			{
				document.getElementById('inhalt').innerHTML = req.responseText;
			}
		
			catch(e)
			{
				alert("Kein R&uuml;ckgabewert");
			}
		}
	}


Hier noch der Teil der in der query.php geladenen Elemente, diese Elemente können noch geklont werden, dies geschieht über die Funktion clone_this(this); die weiter Unten zu finden ist.
PHP:
	echo '<div id="holderID"><div>';
	echo '<select name="anzahl[]">'
		.'<option value="1">1</option>';
	for($i=2;$i<=$servicesetting['Bmaxcolli'];$i++)
		echo '<option value="'.$i.'">'.$i.'</option>';
	echo '</select>';
		if($servicesetting['Blaenge']=="1")
		  echo '<input type="text" size="5" maxlength="5" name="claenge[]">';
		if($servicesetting['Bbreite']=="1")
		  echo '<input type="text" size="5" maxlength="5" name="cbreite[]">';
		if($servicesetting['Bhoehe']=="1")
		  echo '<input type="text" size="5" maxlength="5" name="choehe[]">';
		if($servicesetting['Bmaxrweight']=="1")
		  echo '<input type="text" size="5" maxlength="5" name="crweight[]">';
//		echo '<input type="text"size="5"maxlength="5"name="transfercolli[]">';
//		if($servicesetting['Bmaxvweight']!="-1")
//		  echo '<input type="text"size="5"maxlength="5"name="cvweight[]">';
		if($servicesetting['colli_add']=="1")
			echo '<input type="button"value="Neu"onclick="clone_this(this)">';
	echo'</div></div><hr>';


Die Funktion clone_this()
HTML:
function clone_this(objButton)
	{
	
	
		if(objButton.parentNode)
		{
		tmpNode=objButton.parentNode.cloneNode(true);
		//objButton.form.appendChild(tmpNode);
		document.getElementById("holderID").appendChild(tmpNode);
		for(j=0;j<document.getElementById("holderID").lastChild.childNodes.length;++j)
			{
			if(document.getElementById("holderID").lastChild.childNodes[j].type=='text')
				{
				document.getElementById("holderID").lastChild.childNodes[j].value='';
				break;
				}
			}
		objButton.value="Löschen";
		objButton.onclick=new Function('f1','document.getElementById("holderID").removeChild(this.parentNode)');
		}
	}
 
Hi,

wenn ich hier deine Konstellation nachstelle, hab ich die von dir beschriebenen Probleme nicht.

Meine Testdokumente:

HTML-Dokument
Code:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="author" content="Quaese">
<title>www.tutorials.de</title>
<script type="text/javascript">
<!--
function sendRequest()
{
    try
    {
      req = window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e)
    {
      //Kein AJAX Support
    }
    req.onreadystatechange = handleResponse;

    var ts = "123456"; //<?php echo $keyyy; ?>;
    var id = ts+''+document.eingabe.serviceid.options[document.eingabe.serviceid.selectedIndex].value;
    req.open('post', 'Dateien/query.php');
    req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    req.send('s='+ id);
}

function handleResponse()
{
  if ((req.readyState == 4) && (req.status == 200))
  {
    try
    {
      document.getElementById('inhalt').innerHTML = req.responseText;
    }

    catch(e)
    {
      alert("Kein R&uuml;ckgabewert");
    }
  }
}

function clone_this(objButton){
  if(objButton.parentNode){
	  tmpNode=objButton.parentNode.cloneNode(true);
	  //objButton.form.appendChild(tmpNode);
	  document.getElementById("holderID").appendChild(tmpNode);
	  for(j=0;j<document.getElementById("holderID").lastChild.childNodes.length;++j)
	    {
	    if(document.getElementById("holderID").lastChild.childNodes[j].type=='text')
	      {
	      document.getElementById("holderID").lastChild.childNodes[j].value='';
	      break;
	      }
	    }
	  objButton.value="Löschen";
	  objButton.onclick=new Function('f1','document.getElementById("holderID").removeChild(this.parentNode)');
  }
}
//-->
</script>
<style type="text/css">
  <!--
 //-->
</style>
</head>
<body>
<form action="get_formdata_test.php" method="get" name="eingabe">
  <select name="serviceid" onchange="sendRequest()">
    <option value="0">auswaehlen</option>
    <option value="1">auswaehlen</option>
  </select>
  <input type="text" name="txt_01" value="v_01">
  <div id="inhalt"></div>
  <input type="submit">
</form>
</body>
</html>
query.php
Code:
$servicesetting['Bmaxcolli'] = 5;
$servicesetting['Blaenge'] = 1;
$servicesetting['Bbreite'] = 1;
$servicesetting['Bhoehe'] = 1;
$servicesetting['Bmaxrweight'] = 1;
$servicesetting['colli_add'] = 1;


$strOut  = "<div id=\"holderID\"><div>\n";
$strOut .= "<select name=\"anzahl[]\">\n"
    ."<option value=\"1\">1</option>\n";
for($i=2;$i<=$servicesetting['Bmaxcolli'];$i++)
    $strOut .= "<option value=\"".$i."\">".$i."</option>\n";
$strOut .= "</select>\n";
    if($servicesetting['Blaenge']=="1")
      $strOut .= "<input type=\"text\" size=\"5\" maxlength=\"5\" name=\"claenge[]\">\n";
    if($servicesetting['Bbreite']=="1")
      $strOut .= "<input type=\"text\" size=\"5\" maxlength=\"5\" name=\"cbreite[]\">\n";
    if($servicesetting['Bhoehe']=="1")
      $strOut .= "<input type=\"text\" size=\"5\" maxlength=\"5\" name=\"choehe[]\">\n";
    if($servicesetting['Bmaxrweight']=="1")
      $strOut .= "<input type=\"text\" size=\"5\" maxlength=\"5\" name=\"crweight[]\">\n";
//        echo "<input type=\"text\"size=\"5\"maxlength=\"5\"name=\"transfercolli[]\">";
//        if($servicesetting['Bmaxvweight']!=\"-1\")
//          echo "<input type=\"text\"size=\"5\"maxlength=\"5\"name=\"cvweight[]\">";
    if($servicesetting['colli_add']=="1")
        echo "<input type=\"button\"value=\"Neu\"onclick=\"clone_this(this)\">\n";
$strOut .= "</div></div><hr>";

echo($strOut);
Ciao
Quaese
 
Wie gesagt das Problem tritt ja auch nur beim Firefox auf.
Hat sich aber soweit schon erledigt,
speichere jetzt die in der query.php eingegebenen Daten in einer temp tabelle, mit einem Timestamp und der Kundennummer, und hole mir die Daten beim Insert der Daten in die richtige Tabelle wieder.

Trotzdem vielen Dank Jungs
 

Neue Beiträge

Zurück