Jquery $.post fehler keine Rückgabewert

kramoo

Mitglied
AN ALLE bitte POST #6 lesen ! Hab es noch mal viel einfacher dargestellt!!



Hab es jetzt Stundenlang versucht und finde den Fehler nicht.

Die Daten werden gesendet aber dann passiert nichts mehr. Bekomme keine Antwort!?

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>

<script type="text/javascript" src="jquery/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="../jquery/jquery.lightbox_me.js"></script>
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
					   
	   /* ANFANG -- Klick Event UPDATE */
		$('#update-1-show').css('display','none');	
		$('.update-1').click(function() {
			
			$.getJSON("serverscripts/avz-update-ajax.php", 
				function(data){
					
					var avzID = $("[name=avzID]").val(data.result.avzID);
					$("#ausgabe").append(avzID);
					var avzStatus = $("[name=avzStatus]").val(data.result.avzStatus);
					$("#ausgabe").append(avzStatus);	
					var avzUrl = $("[name=avzUrl]").val(data.result.avzUrl);
					$("#ausgabe").append(avzUrl);	
					var avzUser = $("[name=avzUser]").val(data.result.avzUser);
					$("#ausgabe").append(avzUser);	
					var avzPasswort = $("[name=avzPasswort]").val(data.result.avzPasswort);
					$("#ausgabe").append(avzPasswort);	
					var avzFollow = $("[name=avzFollow]").val(data.result.avzFollow);
					$("#ausgabe").append(avzFollow);	
					var avzArtBearb = $("[name=avzArtBearb]").val(data.result.avzArtBearb);
					$("#ausgabe").append(avzArtBearb);	
					var avzEigenerAnkertxt = $("[name=avzEigenerAnkertxt]").val(data.result.avzEigenerAnkertxt);
					$("#ausgabe").append(avzEigenerAnkertxt);	
					var avzArtFreisch = $("[name=avzArtFreisch]").val(data.result.avzArtFreisch);
					$("#ausgabe").append(avzArtFreisch);	
					var avzArtIndex = $("[name=avzArtIndex]").val(data.result.avzArtIndex);
					$("#ausgabe").append(avzArtIndex);	
					var avzAnmerkung = $("[name=avzAnmerkung]").val(data.result.avzAnmerkung);
					$("#ausgabe").append(avzAnmerkung);	
		
				}
			)
		
			$('#update-1-show').lightbox_me({
				centered: true, 
				overlaySpeed: 'fast',
				overlayDisappearSpeed: 'fast',
				overlayCSS: {background: 'black', opacity: .9}, 
				onLoad: function() { 
					$('#update-1-show').find('input:first').focus()
					}
				});
			return false;
					
		});
		/* ENDE -- Klick Event UPDATE */
	   
} );


$(document).ready(function() {
	$.post("test.php", $("#update1").serialize());
});
</script>

<?php 
$datum = date("Y-m-d"); // datum für ersten AVZ-Eintrag setzen 
?>

</head>
<body>

<button class="update-1">getJSON</button>

<div id="update-1-show"> 
		<form class="lightbox-form" action="" name="update1" id="update1">
			<table align="center">
				<tr valign="baseline">
					<td nowrap="nowrap" align="right">AVZ Status:</td>
					<td><select name="avzStatus" size="1">
							<option value="" selected="selected" ></option>
							<option value="NEU">NEU</option>
							<option value="OK">OK</option>
							<option value="GESPERRT">GESPERRT</option>
							<option value="UNWICHTIG">UNWICHTIG</option>
							<option value="DEFEKT">DEFEKT</option>
						</select></td>
				</tr>
				<tr valign="baseline">
					<td nowrap="nowrap" align="right">Avz Url:</td>
					<td><input type="text" name="avzUrl" value="" size="32" /></td>
				</tr>
				<tr valign="baseline">
					<td nowrap="nowrap" align="right">Avz User:</td>
					<td><input type="text" name="avzUser" value="" size="32" /></td>
				</tr>
				<tr valign="baseline">
					<td nowrap="nowrap" align="right">Avz Passwort:</td>
					<td><input type="text" name="avzPasswort" value="" size="32" /></td>
				</tr>
				<tr valign="baseline">
					<td nowrap="nowrap" align="right">AvzFollow:</td>
					<td><select name="avzFollow" size="1">
							<option value="" selected="selected" ></option>
							<option value="Follow" >Follow</option>
							<option value="Nofollow" >Nofollow</option>
						</select></td>
				</tr>
				<tr valign="baseline">
					<td nowrap="nowrap" align="right">AvzArtBearb:</td>
					<td><select name="avzArtBearb">
							<option value="" selected="selected" ></option>
							<option value="JA" >JA</option>
							<option value="NEIN" >NEIN</option>
						</select></td>
				</tr>
				<tr valign="baseline">
					<td nowrap="nowrap" align="right">AvzEigenerAnkertxt:</td>
					<td><select name="avzEigenerAnkertxt">
							<option value=""></option>
							<option value="JA" >JA</option>
							<option value="NEIN" >NEIN</option>
						</select></td>
				</tr>
				<tr valign="baseline">
					<td nowrap="nowrap" align="right">AvzArtFreisch:</td>
					<td><input type="text" name="avzArtFreisch" value="" size="32" /></td>
				</tr>
				<tr valign="baseline">
					<td nowrap="nowrap" align="right">AvzArtIndex:</td>
					<td><input type="text" name="avzArtIndex" value="" size="32" /></td>
				</tr>
				<tr valign="baseline">
					<td nowrap="nowrap" align="right" valign="top">AvzAnmerkung:</td>
					<td><textarea name="avzAnmerkung" cols="50" rows="5"></textarea></td>
				</tr>
				<tr valign="baseline">
					<td nowrap="nowrap" align="right">&nbsp;</td>
					<td><input type="submit" class="button" value="Datensatz aktualisieren" /></td>
				</tr>
			</table>
			<input type="hidden" name="avzUpDate" value="<?php echo $datum; ?>" />
			<input type="hidden" name="MM_update" value="update" />
			<input type="hidden" name="avzID" value="" />
		</form>
		<p>&nbsp;</p>
		<!-- end .update-1-show --></div>

</body>
</html>

Kurze Erklärung.
Mit klick auf den button "getJSON" werden die Daten vom Server geladen und in einer Lightbox wird das Formular geöffnet und befüllt. Dies erledigt die ganze erste
$(document).ready(function() { }
Funktioniert auch!

In der zweiten $(document).ready(function() {} werden die Daten zum Server gesendet.
lt. Firebug werden Sie auch gesendet.

ABER es kommt keine Antwort zurück!? Egal was ich versuche. Ob ein einfacher php echo oder nur Text in der aufgerufenen "test.php" steht.

Habe ich einen Denkfehler ? Sitze jetzt schon 3 Stunden an dem Problem und bin echt für jede Hilfe dankbar.
 
Zuletzt bearbeitet:
Woran siehst du denn, dass nichts zurück kommt? Benutzt du ein Programm oder ein Plugin, um den Datenverkehr zu überwachen?
Gibt folgendes alert irgendwas aus?

Javascript:
$(document).ready(function() {
    $.post("test.php", $("#update1").serialize(), function(data) {
        alert(data);
    });
});
 
Dein Code zeigt mir die Seite test.php an. Hab da nur Text mit einem einfachen Hallo trin und das wird angezeigt.
So funktioniert aber das Versenden nicht mehr ! Das Formular sendet keine Daten und dein Code ruft direkt beim ersten Aufruf der Seite die text.php auf.


Wenn ich folgenden Code benutze funktioniert das Versenden:

Code:
$(".button").click(function() {
$.post("serverscripts/avz-update-ajax2.php", $("#update1").serialize(), 
function(data) {
  alert("Data Loaded: " + data);
});
});

Aber die Rückgabe nicht mehr siehe Screenshots.

Übertragung:
http://www.kramoo.de/fehler1Post.gif

Antwort:
http://www.kramoo.de/fehler2Antwort.gif


Ich verstehe es echt nicht ?
 
und dein Code ruft direkt beim ersten Aufruf der Seite die text.php auf.

Das macht deiner auch. Er steht ja direkt in der ready-Funktion.
Da ich nicht ganz verstehe, was du überhaupt vor hast, kann ich dir im Moment nicht weiter helfen. Ich kann nur festhalten, dass mehrere ready-Funktionen nichts daran ändern, dass sie sofort beim Laden der Seite ausgeführt werden.
 
Ja das hatte ich noch falsch mit meinem Code !

Richtig ist der zweite!
Also:
Code:
$(".button").click(function() {
$.post("serverscripts/avz-update-ajax2.php", $("#update1").serialize(), 
function(data) {
  alert("Data Loaded: " + data);
});
});

und der wird aufgerufen wenn man das Formular Absendet. Er verschickt auch die Daten wie in Bild http://www.kramoo.de/fehler1Post.gif zu sehen ist aber die Rückgabe liefert eben nichts. Wie in Bild http://www.kramoo.de/fehler2Antwort.gif zu sehen ist.

Warum bekomme ich keinen Wert zurück?
Hab es auch schon direkt mit $.ajax({ versucht aber leider das gleiche Ergebnis.
 
Habe jetzt noch mal zwei einfache neue Dateien angelegt. Mit dem gleichen Fehler.

Code testneu.php:

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
<script type="text/javascript" src="jquery/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="../jquery/jquery.lightbox_me.js"></script>
<script type="text/javascript" charset="utf-8">
	$(document).ready(function() {

		$("#formtest").submit(function() {
			$.post("testneu2.php", $("#formtest").serialize(), 
				function(data) {
				  	alert("Data Loaded: " + data);
				});
		});
				
	}); 
</script>

</head>

<body>

<form action="" method="post" enctype="application/x-www-form-urlencoded" id="formtest">
<input name="name" type="text" />
<input name="senden" type="submit" />
</form>

</body>
</html>

die testneu2.php Rückgabedatei:

Code:
Hallo Welt!

Senden funktioniert aber die Rückgabe ist leider leer so wie in diesen zwei Screenshots.
http://www.kramoo.de/fehler1Post.gif
http://www.kramoo.de/fehler2Antwort.gif
 
Zuletzt bearbeitet:
Die rote Farbe deutet an, dass es einen Fehler gab. Guck mal was der Server für einen Status Code zurück gibt.
 
So das Programm ist fertig und läuft jetzt auch!

Deshalb möchte ich es hier zur Verfügung stellen.

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Dynamisches Formular in einer Lightbox mit AJAX u. JQuery</title>
<link rel="stylesheet" type="text/css" href="style.css"/>
<script type="text/javascript" src="jquery/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="../jquery/jquery.lightbox_me.js"></script>
<script type="text/javascript" charset="utf-8">
	$(document).ready(function() {
					   
	   /* ANFANG -- Klick Event UPDATE */
		$('#update-1-show').css('display','none');	// blendet das Formular aus
		
		/* zweiter Schritt: Die id wird aus dem Link gewonnen und dem 
		getJson Aufruf hinzugefügt. getJson ruft die Daten von Server ab */
		$('a.update-link').click(function() {
			
			var ID = $(this).attr('id');
			
			$.getJSON("serverscripts/avz-update-anfordern.php?avzID="+ID, 
				function(data){
					
					var avzID = $("[name=avzID]").val(data.result.avzID);
					$("#ausgabe").append(avzID);
					var avzStatus = $("[name=avzStatus]").val(data.result.avzStatus);
					$("#ausgabe").append(avzStatus);	
					var avzUrl = $("[name=avzUrl]").val(data.result.avzUrl);
					$("#ausgabe").append(avzUrl);	
					var avzUser = $("[name=avzUser]").val(data.result.avzUser);
					$("#ausgabe").append(avzUser);	
					var avzPasswort = $("[name=avzPasswort]").val(data.result.avzPasswort);
					$("#ausgabe").append(avzPasswort);	
					var avzFollow = $("[name=avzFollow]").val(data.result.avzFollow);
					$("#ausgabe").append(avzFollow);	
					var avzArtBearb = $("[name=avzArtBearb]").val(data.result.avzArtBearb);
					$("#ausgabe").append(avzArtBearb);	
					var avzEigenerAnkertxt = $("[name=avzEigenerAnkertxt]").val(data.result.avzEigenerAnkertxt);
					$("#ausgabe").append(avzEigenerAnkertxt);	
					var avzArtFreisch = $("[name=avzArtFreisch]").val(data.result.avzArtFreisch);
					$("#ausgabe").append(avzArtFreisch);	
					var avzArtIndex = $("[name=avzArtIndex]").val(data.result.avzArtIndex);
					$("#ausgabe").append(avzArtIndex);	
					var avzAnmerkung = $("[name=avzAnmerkung]").val(data.result.avzAnmerkung);
					$("#ausgabe").append(avzAnmerkung);	
		
				}
			)
		
			// Schritt drei: Formular wird mittels Lightbox geöffnet 
			$('#update-1-show').lightbox_me({
				centered: true, 
				overlaySpeed: 'fast',
				overlayDisappearSpeed: 'fast',
				overlayCSS: {background: 'black', opacity: .9}, 
				onLoad: function() { 
					$('#update-1-show').find('input:first').focus()
					}
				});
			return false;
				
		});
		/* ENDE -- Klick Event UPDATE */
	   
		
		// ANFANG -- Formular Senden
		// Schritt vier: Das Formular wird gesendet und Lightbox gschlossen
		$("#formupdate").submit(function() {
			$.post("serverscripts/avz-update-eintragen.php", $("#formupdate").serialize(),	
				function(data) {
					$("#meldung").text(data); // gibt den Response aus
				}
			);
			$('.lb_overlay').css( {'display': 'none'} );
			$('#update-1-show').css( {'display': 'none'} );
			return false;  // **** WICHTIG sonst funktioniert die Rückgabe nicht ****
			
		});
		// ENDE -- Formular u. Lightbox

} );
</script>

<?php 
$datum = date("Y-m-d"); // datum für ersten AVZ-Eintrag setzen 
?>
</head>

<body>

<!-- Erster Schritt: Der Link wird mit $('a.update-link').click(function() abgefangen -->
<a href="serverscripts/avz-update-anfordern.php" id="225" class="update-link">11111</a>
<a href="serverscripts/avz-update-anfordern.php" id="1" class="update-link">22222</a>
<a href="serverscripts/avz-update-anfordern.php" id="2" class="update-link">33333</a>
<div id="meldung"></div>


<div id="update-1-show"> 
		<form id="formupdate" class="lightbox-form" >
			<table align="center">
				<tr valign="baseline">
					<td nowrap="nowrap" align="right">AVZ Status:</td>
					<td><select name="avzStatus" size="1">
							<option value="" selected="selected" ></option>
							<option value="NEU">NEU</option>
							<option value="OK">OK</option>
							<option value="GESPERRT">GESPERRT</option>
							<option value="UNWICHTIG">UNWICHTIG</option>
							<option value="DEFEKT">DEFEKT</option>
						</select></td>
				</tr>
				<tr valign="baseline">
					<td nowrap="nowrap" align="right">Avz Url:</td>
					<td><input type="text" name="avzUrl" value="" size="32" /></td>
				</tr>
				<tr valign="baseline">
					<td nowrap="nowrap" align="right">Avz User:</td>
					<td><input type="text" name="avzUser" value="" size="32" /></td>
				</tr>
				<tr valign="baseline">
					<td nowrap="nowrap" align="right">Avz Passwort:</td>
					<td><input type="text" name="avzPasswort" value="" size="32" /></td>
				</tr>
				<tr valign="baseline">
					<td nowrap="nowrap" align="right">AvzFollow:</td>
					<td><select name="avzFollow" size="1">
							<option value="" selected="selected" ></option>
							<option value="Follow" >Follow</option>
							<option value="Nofollow" >Nofollow</option>
						</select></td>
				</tr>
				<tr valign="baseline">
					<td nowrap="nowrap" align="right">AvzArtBearb:</td>
					<td><select name="avzArtBearb">
							<option value="" selected="selected" ></option>
							<option value="JA" >JA</option>
							<option value="NEIN" >NEIN</option>
						</select></td>
				</tr>
				<tr valign="baseline">
					<td nowrap="nowrap" align="right">AvzEigenerAnkertxt:</td>
					<td><select name="avzEigenerAnkertxt">
							<option value=""></option>
							<option value="JA" >JA</option>
							<option value="NEIN" >NEIN</option>
						</select></td>
				</tr>
				<tr valign="baseline">
					<td nowrap="nowrap" align="right">AvzArtFreisch:</td>
					<td><input type="text" name="avzArtFreisch" value="" size="32" /></td>
				</tr>
				<tr valign="baseline">
					<td nowrap="nowrap" align="right">AvzArtIndex:</td>
					<td><input type="text" name="avzArtIndex" value="" size="32" /></td>
				</tr>
				<tr valign="baseline">
					<td nowrap="nowrap" align="right" valign="top">AvzAnmerkung:</td>
					<td><textarea name="avzAnmerkung" cols="50" rows="5"></textarea></td>
				</tr>
				<tr valign="baseline">
					<td nowrap="nowrap" align="right">&nbsp;</td>
					<td><input type="submit" value="Datensatz aktualisieren" id="buttonupdate"/></td>
				</tr>
			</table>
			<input type="hidden" name="avzUpDate" value="<?php echo $datum; ?>" />
			<input type="hidden" name="MM_update" value="update" />
			<input type="hidden" name="avzID" value="" />
		</form>
	<p>&nbsp;</p>
<!-- end .update-1-show --></div>
		

</body>
</html>

Vielleicht könnt Ihr mal schauen ob ich was besser machen kann!?
Was mich noch sehr stört ist das ich mit

Code:
var avzID = $("[name=avzID]").val(data.result.avzID);
$("#ausgabe").append(avzID);

alle Formularfelder einzeln befüllen muss. Wird wohl nicht anders gehen oder?
 
Steck die ganzen Namen in ein Array. So in etwa

Javascript:
var names = ['avzID', 'avzStatus', 'avzUser'];//Hier noch mehr reinstecken

$.getJSON("serverscripts/avz-update-anfordern.php?avzID="+ID, 
	function(data){
		var ausgabe = $("#ausgabe");
		
		for(var i=0; i<names.length; i++) {
			ausgabe.append(
				$("[name=" + names[i] + "]").val(data.result[names[i]])
			);
		}
	}
)
 
Ja das sieht schon viel besser aus! Danke

Wäre es nicht noch möglich

var names = ['avzID', 'avzStatus', 'avzUser'];//Hier noch mehr reinstecken

die automatisch zu generieren zu lassen?
 
Zurück