Php variable an javascript übergeben

Hallo Leute,

gibt es eine Möglichkeit eine Variable aus einer PHP-Datei in ein Javascript zu übergeben ohne die PHP-Datei vorher zu includen?

Wäre euch für ein paar Tipps sehr dankbar.

Grüße Linda

Hi,

direkt „übergeben“ kannst du die Variable nicht. Du kannst aber das JavaScript dynamisch mit PHP erzeugen und dann die Variable entsprechend füllen.

var meineVariable = „<?php echo „derVariableninhalt“; ?>“;

Wenn der Wert erst dynamisch vom Server abgefragt werden muss, kannst du Ajax verwenden. Auf den Server legst du dann ein Script ab, dass dir eine Entsprechende Ausgabe erzeugt (zum Beispiel ein serialisiertes JSON-Objekt) und das Script rufst du dann von deinem Frontend aus auf.

Sehr einfach geht das zum Beispiel mit den jQuery Shorthand-Ajax-Methoden: http://api.jquery.com/category/ajax/shorthand-methods/

Viele Grüße,
John Wart

Hallo John,

vielen Dank für die schnelle Antwort.

Also, der Wert wird durch PHP aus Mysql geholt und soll nun zur Weiterverabeitung an Javascript übergeben werden. Ich muss zu meiner Schande gestehen, dass ich ein JS änfänger bin… wie soll ich dieses JSON einsetzen??

Hi,

die Frage ist ja dann noch: Hast du diesen Wert schon beim Aufruf der Seite? Dann rate ich dir zu Variante 1.

Beispiel: Du hast eine Startdatei für deine Webseite. Die index.php
Darin eingebunden ist das JavaScript von dir. Beim Aufruf der index.php steht der geforderte Wert bereits in der Datenbank und muss nur dort ausgelesen werden. In diesem Fall nimmst du Variante 1. Hier wird kein Ajax/JSON benötigt.

Beispiel 2: Der Benutzer hat auf deiner index.php eine dynamische Benutzeroberfläche. Bei einem Klick auf einen bestimmten Knopf solle ein aktueller Wert aus der Datenbank ausgelesen und angezeigt werden ohne, dass die Seite neu geladen werden muss. Dann nimmst du Variante 2.

Viele Grüße,
John Wart

Hey,

es spricht alles für Variante 2, muss lediglich zwei PHP Variablen in JS übertragen, wie könnte da der Code aussehen mit JSON im Javascript und im PHP-Script?

Vielen Dank

Liebe Grüße Linda

Hi,

es spricht alles für Variante 2, muss lediglich zwei PHP
Variablen in JS übertragen, wie könnte da der Code aussehen
mit JSON im Javascript und im PHP-Script?

Beispiele gibt es eigentlich auch auf der Seite die ich verlinkt hatte, aber hier mal ein ganz grobes:

  1. index.html (mit dem JavaScript)

    $.getJSON(
    ‚test.php‘,
    function(data) {
    alert(data.variable1);
    }
    );

  2. index.php (daher kommen die Werte)

    <?php $return['variable1'] = "wert1";
    $return['variable2'] = "wert2"; echo json\_encode($return); ?\>

Viele Grüße,
John Wart

Hallo John,
vielen Dank für das Beispiel. Nun habe ich folgendes Problem:

Die Übertragene Variablen gebe ich im JS mit alert aus, nachdem ich bei der alert-Box auf ok klicke wird die Formularseite verlassen, was ich aber nicht möchte, da im Formular die Eigaben nochmals korrigiert werden müssen.
Komm da nicht mehr weiter… :frowning:

Hab es mit history.back() versucht, aber leider ohne Erfolg
Hättest du eventuell eine Idee?

Liebe Grüße Linda

Moin,

wo ist denn der Quellcode? Der Browser macaht ja normalerweise nichts, was Du ihm nicht sagst, also wirst Du das irgendwo hin geschrieben haben, dass er die Seite verlassen soll. Möglicherweise auch im HTML-Code. Manchmal hilft schon ein „return false“ aus einer JS-Funktion, um die weitere Abarbeitung (wie z.B. das Ausführen eines Links) zu verhindern.

Liebe Grüße,
-Efchen

Hi Efchen,

du hast vollkommen recht.

Es sieht so aus:

Beim Click auf dem Absende Button im HTML-Code überprüft die Funktion " onsubmit=„return chkFormular()“ das Html-Formular, wenn alles OK dan gehen die Daten an action=„bestellung_anlegen.php“. Das aufgerufene Javascript überprüft nun die Formularfelder. Wenn die eingegebene Daten nicht korrekt sind, gehe ich zurück mit return false;
Soweit alles Prima.

Bei einem bestimten Feld rufe ich aber innerhalb der chkFormular-Funktion eine JQUERY FUNKTION um über PHP von MYSQL Daten abzurufen.

Und gebe dann mit alert eine Meldung aus.

Wie soll ich jetzt aus der JQUERY-Funktion an die übergeordnete chkFormular-Funktion ein return false abgeben??

Das Javscript sieht so aus:

function chkFormular()
{

if(document.form_dyn.vorname.value == „“)
{
document.form_dyn.vorname.style.background = „#FFAAAA“;
alert(„Bitte geben Sie Ihren Vornamenamen ein!“);
document.form_dyn.vorname.focus();
document.form_dyn.vorname.style.background = „#FFFFFF“;
return false;
}

… usw.

$(document).ready(function() {

var a1=(document.form_dyn.artikelpos1.value);
var a2=(document.form_dyn.artikelpos2.value);
var a3=(document.form_dyn.artikelpos3.value);
var a4=(document.form_dyn.artikelpos4.value);
var a5=(document.form_dyn.artikelpos5.value);
var a6=(document.form_dyn.artikelpos6.value);
var a7=(document.form_dyn.artikelpos7.value);
var a8=(document.form_dyn.artikelpos8.value);
var a9=(document.form_dyn.artikelpos9.value);
var a10=(document.form_dyn.artikelpos10.value);
var a11=(document.form_dyn.artikelpos11.value);
var a12=(document.form_dyn.artikelpos12.value);
var a13=(document.form_dyn.artikelpos13.value);
var a14=(document.form_dyn.artikelpos14.value);
var a15=(document.form_dyn.artikelpos15.value);
var a16=(document.form_dyn.artikelpos16.value);

var m1=(document.form_dyn.mengepos1.value);
var m2=(document.form_dyn.mengepos2.value);
var m3=(document.form_dyn.mengepos3.value);
var m4=(document.form_dyn.mengepos4.value);
var m5=(document.form_dyn.mengepos5.value);
var m6=(document.form_dyn.mengepos6.value);
var m7=(document.form_dyn.mengepos7.value);
var m8=(document.form_dyn.mengepos8.value);
var m9=(document.form_dyn.mengepos9.value);
var m10=(document.form_dyn.mengepos10.value);
var m11=(document.form_dyn.mengepos11.value);
var m12=(document.form_dyn.mengepos12.value);
var m13=(document.form_dyn.mengepos13.value);
var m14=(document.form_dyn.mengepos14.value);
var m15=(document.form_dyn.mengepos15.value);
var m16=(document.form_dyn.mengepos16.value);

$.post(‚mCheckDBArtbezMenge.php‘, {artpos1:a1, artpos2:a2, artpos3:a3,artpos4:a4,artpos5:a5,artpos6:a6,artpos7:a7,artpos8:a8,artpos9:a9,artpos10:a10,artpos11:a11,artpos12:a12,artpos13:a13,artpos14:a14,artpos15:a15,artpos16:a16,
mpos1:m1,mpos2:m2,mpos3:m3,mpos4:m4,mpos5:m5,mpos6:m6,mpos7:m7,mpos8:m8,mpos9:m9,mpos10:m10,mpos11:m11,mpos12:m12,mpos13:m13,mpos14:m14,mpos15:m15,mpos16:m16} ,

function(data) {
alert (data);

});

});

}

Grüße Linda

Versuchs mit Variable

function chkFormular()
{
var rwert = true;
if(document.form_dyn.vorname.value == „“)
{
document.form_dyn.vorname.style.background = „#FFAAAA“;
alert(„Bitte geben Sie Ihren Vornamenamen ein!“);
document.form_dyn.vorname.focus();
document.form_dyn.vorname.style.background = „#FFFFFF“;
return false;
}
var getdata = function(data) {
alert (data);
if (data) rwert=false;
}
$(document).ready(function() {
var a1=(document.form_dyn.artikelpos1.value);
var a2=(document.form_dyn.artikelpos2.value);

var m1=(document.form_dyn.mengepos1.value);
var m2=(document.form_dyn.mengepos2.value);

$.post(‚mCheckDBArtbezMenge.php‘, {artpos1:a1, artpos2:a2,mpos1:m1,mpos2:m2} , getdata);
}
return rwert;
);

Hey,

hab’s ausprobiert aber leider ohne Erfolg.

Das „return false;“ muss die chkFormular Funktion abbrechen. So wie Du es vorschlägst geschieht dies ja nicht, oder??

Grüße Linda

hmm , ich hab mal noch ein versuch gestartet , nur bin ich mir nicht sicher wann du submit möchtest ?

Bei $.post data soll was passieren ?

Wenn data vorhanden dann formular senden ?
oder
wenn daten nicht vorhanden dann formular senden ?

probier mal das , wobei du die abfrage der werte bei if (!data) anpassen musst ich weiss ja nicht was da ankommt.

function chkFormular()
{
if(document.form_dyn.vorname.value == „“)
{
document.form_dyn.vorname.style.background = „#FFAAAA“;
alert(„Bitte geben Sie Ihren Vornamenamen ein!“);
document.form_dyn.vorname.focus();
document.form_dyn.vorname.style.background = „#FFFFFF“;
return false;
}
$(document).ready(function() {
var a1=(document.form_dyn.artikelpos1.value);
var a2=(document.form_dyn.artikelpos2.value);
var m1=(document.form_dyn.mengepos1.value);
var m2=(document.form_dyn.mengepos2.value);
if (checkForm == false )
$.post(‚mCheckDBArtbezMenge.php‘, {artpos1:a1, artpos2:a2,mpos1:m1,mpos2:m2} ,
function(data) {
alert (data);
if (!data) {document.form_dyn.send();}
}
);
}
);
return false;
};

Moin,

Wie soll ich jetzt aus der JQUERY-Funktion an die
übergeordnete chkFormular-Funktion ein return false abgeben??

Gar nicht, wenn Du eine Ajax-Abfrage machst (so wie ich das verstanden habe), weil die asynchron abläuft.
Das bedeutet, dass nachdem Du Deine Ajax-Abfrage abgeschickt hast, der normale Scriptablauf weiter geht, also auch das Absenden des Formulars. Das musst Du dann sofort unterbinden (return false) und erst nach erfolgter Ajax-Rückmeldung (das kann Millisekunden, theoretisch aber auch Minuten dauern) kannst Du dann entscheiden, ob das Formular vielleicht doch abgeschickt werden soll.

Liebe Grüße,
-Efchen