View previous topic :: View next topic |
Author |
Message |
demo1987 Smarty Rookie
Joined: 16 Apr 2014 Posts: 9
|
Posted: Mon Feb 02, 2015 8:00 pm Post subject: smarty assign durch javascript onclick? |
|
|
ich lade in einem template eine tabelle, jede tr ist ein datensatz, am ende der tr ist ein button
ich möchte das wenn dieser button geklickt wird eine id aus diesem datensatz in eine andere smarty variable gepackt wird
die neue variable soll dann an anderer stelle ausgegeben werden
hier ist die schleife. Der Wert von {$medicalservice.id} soll nach dem click übergeben werden
Code: |
...
<tbody>
{foreach $medicalservices as $medicalservice}
<tr>
<td class="pl18 pr18">{$medicalservice.id}</td>
<td class="pl18 pr18">{$medicalservice.title}</td>
...
<td class="pl18 pr18">
<div class="btn-group">
<button id="set-id" type="button" class="btn btn-info light"><span>Lage öffnen</span>
</button>
</div>
</td>
</tr>
{/foreach}
</tbody>
...
|
Der Wert soll über den button mit der id #set-id in die smarty variable {$set-id} übergeben werden.
Die neue variable wird unter der tabelle ausgegeben:
Code: | <p>Es wurde {$set-id} gesetzt</p> |
-------------------------------------------------------------
Ich habe schon alles versucht, link aufrufen und in einer php datei die $_GET variable an smarty übergeben
per ajax call die daten setzen
aber nichts hat funktioniert
wie würdet ihr es machen? was mache ich falsch? |
|
Back to top |
|
Grizzly Smarty Pro
Joined: 15 Apr 2011 Posts: 172 Location: Germany
|
Posted: Wed Feb 04, 2015 9:02 am Post subject: |
|
|
Wenn ich dich richtig verstehe, willst du nur beim klick auf den Button einen Text in diesen p-Tag reinschreiben?
gib dem p-Tag eine id:
z. B.:
Code: | <p id="idChangedcontent"></p> |
dem button gibst du statt der id ein onclick-event:
Code: | <button onclick="document.getElementById('idChangedcontent').innerHTML = 'Es wurde die ID bla gesetzt'" type="button" class="btn btn-info light"><span>Lage öffnen</span> |
Sollte gehen. |
|
Back to top |
|
demo1987 Smarty Rookie
Joined: 16 Apr 2014 Posts: 9
|
Posted: Wed Feb 04, 2015 9:24 am Post subject: |
|
|
Fast
Ich habe eine Schleife in Smarty erstellt, die Datensätze ausgibt. Jeder Datensatz hat eine ID, diese ID soll mit dem Button in der letzten Spalte verknüpft werden.
Wenn ich diesen Button drücke dann soll die ID des jeweiligen Datensatzes in eien andere globale Smarty Variable gepackt werden.
Diese gesetzete Variable gebe ich dann zwar auch auf der Seiet aus (als Hilfestellung) ich möchte sie aber dann an anderen Stellen auch nutzen. Die ID in eine SESSION Variable zu packen wäre auch eien Lösung.
Am liebsten per AJAX wenn es geht, aber irgendwei krig ich das nicht hin. |
|
Back to top |
|
Grizzly Smarty Pro
Joined: 15 Apr 2011 Posts: 172 Location: Germany
|
Posted: Wed Feb 04, 2015 10:16 am Post subject: |
|
|
Ach so,
dann mach doch einfach ein Formular mit einem Submit button, der dann die benötigte ID übergibt (GET oder POST) und dann kannst du ja die "Hilfestellung" so machen, dass du überprüfst ist der Request gesetzt, wenn ja dann gib den p-Tag aus mit dem Inhalt der ID.
Im Code kannst du ja dann ebenfalls abfragen obs gesetzt ist, wenn ja, dann überschreibe die Variable... |
|
Back to top |
|
demo1987 Smarty Rookie
Joined: 16 Apr 2014 Posts: 9
|
Posted: Wed Feb 04, 2015 10:21 am Post subject: |
|
|
Ja das mache ich auch so, aber sollte jemand ein AJAX Code Beispiel für mich haben wie ich das machen kann wäre ich sehr dankbar. |
|
Back to top |
|
Grizzly Smarty Pro
Joined: 15 Apr 2011 Posts: 172 Location: Germany
|
Posted: Wed Feb 04, 2015 10:25 am Post subject: |
|
|
Am einfachsten finde ich AJAX mit externen JavaScript Framework wie z. B. jQuery. Und wenn du es schon eh einsetzt, um so besser. Wenn nicht, würde ich dir raten (außer du setzt ein anderes ein).
Dort geht es ganz einfach |
|
Back to top |
|
demo1987 Smarty Rookie
Joined: 16 Apr 2014 Posts: 9
|
Posted: Wed Feb 04, 2015 10:41 am Post subject: |
|
|
ich setze jQuery ein aber die Skripte die ich dort verwende habe ich nicht selbst geschrieben sondern woanders her bekommen.
Könntest du mir ein Script schreiben wie das aussehen müsste?
Bedenke ich arbeite mit Smarty. Das hie rhatte ich schon rasu gefunden:
Code: |
$.ajax({
type: 'POST',
url: 'yourphppage.php',
data: WERT von dem Button?
});
|
Da ist die Frage, wie verknüpfe ich die Smarty Variable {$medicaservices.id} mit dem Button? |
|
Back to top |
|
Grizzly Smarty Pro
Joined: 15 Apr 2011 Posts: 172 Location: Germany
|
Posted: Wed Feb 04, 2015 10:54 am Post subject: |
|
|
Okay, kein Problem:
Code: |
$.ajax({
type: 'POST',
url: 'yourphppage.php',
data: JSON.stringify({'deinPostParamaterName': 'deinPostParamaterWert' }),
success: function() {
//mache dinge, wenn alles erfolgreich, wie z. B. im p-Tag den Wert reinschreiben
}
error: function() {
//Im Fehlerfall, dinge tun
}
});
|
Wenn du also im php-Code den POST-Parameter "ID" überprüfst ($_POST["ID"])
dann schaut dein AJAX-Aufruf so aus:
Code: |
$.ajax({
type: 'POST',
url: 'DeineUrlZumSetzenDerID.php',
data: JSON.stringify({'ID': '1' }),
success: function() {
//mache dinge, wenn alles erfolgreich, wie z. B. im p-Tag den Wert reinschreiben
$('idChangedcontent').html('Es wurde die ID 1 gesetzt');
}
error: function() {
//Im Fehlerfall, dinge tun
}
});
|
|
|
Back to top |
|
demo1987 Smarty Rookie
Joined: 16 Apr 2014 Posts: 9
|
Posted: Wed Feb 04, 2015 11:39 am Post subject: |
|
|
wie komme ich denn an den wert von meinem Button ran? In deinem Beispiel sind die übergebenen Werte ja statisch |
|
Back to top |
|
Grizzly Smarty Pro
Joined: 15 Apr 2011 Posts: 172 Location: Germany
|
Posted: Wed Feb 04, 2015 11:49 am Post subject: |
|
|
Oh da gibt es mehrere Arten xD
Wie hast du es denn vorher gemacht mit dem set-id button?
theoretisch kannst du dem button ein onclick-event mitgeben mit einem data-attribut so z. B.:
Code: | <button type="button" onclick="javascript:myAjaxCall(this);" class="btn btn-info light" data-selectedid="{$medicalservice.id}" /> |
dann in deiner JS-Funktion dieses data-attribut auslesen, in der deine benötigte id steht:
Code: | function myAjaxCall(button) {
var id = $(button).data("selectedid");
$.ajax({
type: 'POST',
url: 'DeineUrlZumSetzenDerID.php',
data: JSON.stringify({'ID': id }),
success: function() {
//mache dinge, wenn alles erfolgreich, wie z. B. im p-Tag den Wert reinschreiben
$('idChangedcontent').html('Es wurde die ID 1 gesetzt');
}
error: function() {
//Im Fehlerfall, dinge tun
}
});
} |
oder du setzt die id über das tatsächliche ID-Attribut
Code: | var id = $(button).attr("id"); |
oder du übergibst im onclick die id:
Code: | <button type="button" onclick="javascript:myAjaxCall({$medicalservice.id});" class="btn btn-info light" /> |
oder, oder, oder....
BTW: Es ist allgemein nicht gut, dass du ein Element hast, welches ein ID-Attribut hat, welches öfter als ein mal vorkommt. Denn ein Element ist mit einem ID-Attribut "einzigartig" sozusage n |
|
Back to top |
|
demo1987 Smarty Rookie
Joined: 16 Apr 2014 Posts: 9
|
Posted: Wed Feb 04, 2015 12:40 pm Post subject: |
|
|
Vorher hatte ich es völlig falsch da ich die Schleife gar nicht berücksichtigt hatte, aber deien methode:
Code: | <button type="button" onclick="javascript:myAjaxCall(this);" class="btn btn-info light" data-selectedid="{$medicalservice.id}" /> |
gefällt mir am besten, das probiere ich nachher mal aus
Danke |
|
Back to top |
|
|