itflori
Goto Top

Dropdownfeld auslesen und mit AJAX und JS an PHP senden

Hallo zusammen,

ich versuche gerade die Auswahl eines Dropdown Menüs in eine Variable schreiben zu lassen und Sie mir nach PHP zu übertragen damit ich damit weiterarbeiten kann. Nachdem ich diese in PHP behandelt habe soll diese wieder auf meiner Seite ausgegeben werden. Das alles am besten in Echtzeit!

Hier mein Dropdownfeld

	<div class="content animate-panel">  

		<div class="Row2">  
			<div class="col-lg-12">  
				<div class="hpanel hyellow">  
					<div class="panel-heading">  
						<div class="panel-tools">  
							<span class="badge badge-warning">BI: <?php echo $erg_1 ?></span> //Ausgabe wieder aus PHP  
							<a class="showhide"><i class="fa fa-chevron-up"></i></a>  
						</div>
						<h3>1. Allgemein</h3>
					</div>
					<div class="panel-body">  
						<form name="Formular_1" class="form-horizontal" method="post">  
							<div class="form-group">  
								<label class="col-sm-6 controle-label">  
									Erfüllt das Bauteil und / oder das Befestigungselement seine Funktion ohne Probleme? <br>
								</label>
								<div class="col-sm-2">  
									<select name="Auswahl111" id="Auswahl111" class="form-control m-b">  
										<option value="Auswahl">Auswahl</option>  
										<option value="Ja">Ja</option>  
										<option value="Nein">Nein</option>  
										<option value="n.r.">n. r.</option>  
									</select>
								</div>
                                                             </div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
Mein JS versuch
function onSelectChange(){
//$(document).ready(function chk() { //andere (alter) Test
//$('select.status').on('change',function(){ //andere (alter) Test		 
	//var Auswahl121 = document.getElementById('Auswahl111'); 
	var Auswahl111 = document.getElementById('Auswahl111');  
	var Auswahl121 = document.getElementById('Auswahl121');  
	var dataString='Auswahl111='+ Auswahl111 + 'Auswahl121=' + Auswahl121;  
	//var index = dropdown.selectedIndex; //andere (alter) Test
	//var val = dropdown.options[index].value; //andere (alter) Test
$ajax({
			type:"POST",  
			url:"berechnen.php",  
			data:dataString,
			cache:false,
}).done(function(data){
		alert("Erfolgreich:" + dataString);  
		
}).fail(function() { 
	alter("Fehler!");  
}).always(function() {
	alter("Beendet");  
});
}

Habe eben noch das hier mit aufgenommen und probiere gerade damit rum:
$("#Auswahl111").on("Change", function () {  
	ajaxanfrage($(this).val());
})

function ajaxanfrage(wahl) {
	$.ajax({
		url: "berechnen.php",  
		data: {
			Auswahl: wahl
		},
		success: function (daten) {
			$("#Ausgabe").html(daten);  
		}
	});
	
}
Meine PHP verarbeitung
<?php
	$erg_1 = 0;
	$rech_1 = 0;
	$erg_2 = 0;
	$erg_3 = 0;
	$erg_4 = 0;
	$end_erg = 0;

	
	//if ($Teil["Auswahl111"] == "Nein" ) { //anderer Test 
	//		$rech_1 + 6;
	//	}
	//$erg_1 = $rech_1;
	
	if (isset($_POST["Auswahl111" == "Nein" ])){  
		$rech_1 + 6;
	}

Irgendwie scheint das alles nicht zu funktionieren ... Kann mir jemand Helfen? Was mache ich falsch? Habe ich einen Falschen Ansatz?

Danke schon jetzt für euere Hilfe!
Gruß
Florian

Content-ID: 320930

Url: https://administrator.de/contentid/320930

Ausgedruckt am: 19.11.2024 um 20:11 Uhr

131381
131381 14.11.2016 aktualisiert um 11:33:30 Uhr
Goto Top
Hi,
erstens solltest du die Eigenschaft der Objekte angeben welche du benutzen willst, also anstatt
document.getElementById('Auswahl111')
das hier nutzen.
document.getElementById('Auswahl111').value;
Zweitens nutzt du im Done-Callback die falsche Variable (dataString) anstatt der, welche an die Funktion übergeben wird (data)!

Drittens im PHP solltest du per echo die Daten zurückgeben.

Siehe auch
JavaScript Variable an PHP per AJAX?
Manuelle Server Status Abfrage.

Gruß
Arano
Lösung Arano 14.11.2016 um 11:48:12 Uhr
Goto Top
Hallo,

Irgendwie scheint das alles nicht zu funktionieren
Das kann also an einem Programmfehler liegen ODER an deinem Verständnis für das Programm.

Irgendwie scheint das alles nicht zu funktionieren
Wieso behauptest du das einfach so ?

  1. Was ist die Aktion die Du durchführst bei der ein anderes Ergebnis/Verhalten herauskommt als du erwartest hast !?
  2. Mal verwendest du $ajax({ und mal $.ajax({ was sagt deine Browserfehlerkonsole dazu !?
  3. Du willst unter anderem ein alert("PHP-Ergbnis") machen, in deinem PHP-Script wird aber nirgends eine Ausgabe gemacht die zurück- bzw. ausgegeben werden kann.
  4. Ist das hier die Fortführung von

Zu dem glaube ich,
  • das du dich hier zu sehr auf ein Detail des Ganzen konzentrierst,
  • niemand weiß was du wirklich willst bzw. was das Ziel ist -> niemand weiß wie geholfen werden kann,
  • dadurch alle etwas anderes Vorschalgen -> Chaos entsteht.

Wenn ich mir das PHP ansehe.... ohne zu wissen was das eigentliche Ziel/Vorhaben ist
Ich würde auf PHP und AJAX (Toilettenreiniger ;)) komplett verzichten !
aber vielleicht verstehe nur ich das Programm nicht ;)

WAS ist das Ziel !?

~Arano
ITFlori
ITFlori 14.11.2016 um 12:52:32 Uhr
Goto Top
Hi,

danke für deinen Tipp mit dem .value .... Die daten werden allerdings immer noch nicht ausgegeben ....

Die Variable dataString habe ich ein bisschen weiter oben Definiert

und das zurückgeben via echo habe ich eigentlich auch drin

Zeile 8: <span class="badge badge-warning">BI: <?php echo $erg_1 ?></span> //Ausgabe wieder aus PHP

Ich probiere in JS momentan damit rum:
$("#Auswahl111").on("Change", function () {  
	ajaxanfrage($(this).val());
})

function ajaxanfrage(wahl) {
	$.ajax({
		url: "berechnen.php",  
		data: {
			Auswahl: wahl
		},
		success: function (daten) {
			$("#Ausgabe").html(daten);  
		}
	});
	
}
ITFlori
ITFlori 14.11.2016 um 12:59:22 Uhr
Goto Top
Hallo,

Die Ausgabe in der HTML Zeile 8 ist für mich das Problem.

Wenn ich im Dropdownfeld "Auswahl111" "Nein" auswähle sollte PHP darauf eigentlich 6 addieren und mit somit keine 0 mehr in dem Feld anzeigen sondern eine 6. Soviel zu meinem Problem ...

zu deinem 2. Punkt ich habe da einiges Auskommentiert da ich da ich schon mehere Versuche unternommen habe mein Problem zu lösen

das alert war ebenfalls ein älterer Versuch ... habe es nur nicht gelöscht :D Vielleicht brauche ich es ja nochmal

Ja das ist eine Fortführung, nachdem mein Problem in PHP und HTML gelöst war und sich dieses Problem mehr auf JS konzentriert hielt ich es für Sinnvoll eine neue Frage aufzumachen.

Für Alle zum Verständnis was eigentlich passieren soll.

Der Anwender soll in Dropdown feld "Auswahl111" "Ja", "Nein" oder "n. r. auswählen können.
Wenn er das gemacht hat soll ich echtzeit eine Ausgabe in der Badge gemacht werden (Zeile 8 HTML)

Bei der Auswahl "Ja" oder "n. r." bleibt die 0 erhalten.
Bei der Auwahl "Nein" soll sich der Wert um +6 verändern!

Das alles muss passieren ohne das sich die Seite neu lädt ... und natürlich in Echtzeit.

Ich hoffe ihr konntet jetzt zumindest verstehen was passieren soll


Gruß Florian
131381
Lösung 131381 14.11.2016 aktualisiert um 13:05:16 Uhr
Goto Top
Zitat von @ITFlori:
Wenn ich im Dropdownfeld "Auswahl111" "Nein" auswähle sollte PHP darauf eigentlich 6 addieren und mit somit keine 0 mehr in dem Feld anzeigen sondern eine 6. Soviel zu meinem Problem ...
Warum addierst du das dann nicht direkt mit JavaScript und gibst es an der entsprechenden Stelle aus??
ITFlori
ITFlori 14.11.2016 um 13:10:45 Uhr
Goto Top
mhhh das ist tatsächlich eine gute Frage ... darüber hatte ich letzte woche mal nachgedacht und dann bin ich irgenwie auf Ajax und PHP gekommen :D Danke für deine Idee ich hätte mich jetzt so in diesem Thema verannt ..... Damit ist mein Problem ja gelöst!

Danke!!!!!

Gruß Flo
Arano
Arano 14.11.2016 um 13:33:14 Uhr
Goto Top
Hi,

Warum [...] nicht direkt mit JavaScript [...] ?
mhhh das ist tatsächlich eine gute Frage ...
na siehst du... DAS ist genau das was ich mir nämlich schon gedacht hatte.
Aber ohne die eigentliche GANZE Aufgabe zu kennen, nicht wissen konnte.

Denk mal drann: Die Jungs aus dem anderem Beitrag hätten dir das evtl. auch schon sagen können. Aber auch die kannten die ganze Aufgabe nicht so das sie dir nur eine __Möglichkeit__ nannten die für den kleinen Teil funktioniert hätte (überdimensioniert) aber eben nicht fürs Ganze.

Zu dem glaube ich,
  • das du dich hier zu sehr auf ein Detail des Ganzen konzentrierst,
  • niemand weiß was du wirklich willst bzw. was das Ziel ist -> niemand weiß wie geholfen werden kann,
  • dadurch alle etwas anderes Vorschalgen -> Chaos entsteht.

Wenn ich mir das PHP ansehe.... ohne zu wissen was das eigentliche Ziel/Vorhaben ist
Ich würde auf PHP und AJAX (Toilettenreiniger ;)) komplett verzichten !
aber vielleicht verstehe nur ich das Programm nicht ;)

~Arano