PHP Constante im JavaScript-Code ausgeben

fredolin

Erfahrenes Mitglied
Hallo JS Gemeinde,

in deisem Code möchte ich Konstanten aus einem JS übergeben, die dann in einer HTML Seite angezeigt wird.

PHP:
function showValue(){
    //var div = document.getElementById("show");
    var cols = document.getElementsByName("payment");
    for(var i=0; i<cols.length; i++){
        if(cols[i].checked == true){
            if(cols[i].value == "24"){
            	if(document.getElementById("show").style.display == "none"){
            		document.getElementById("show").style.display = "block";
            		var prevInnerHTML = new String();
            		prevInnerHTML = document.getElementById("show").innerHTML;
            		prevInnerHTML = prevInnerHTML.concat('<h3 class="h3_text">Kreditkarte (International)</h3>');
            		prevInnerHTML = prevInnerHTML.concat('<?php echo BUSSINESS_PAYMENT_CCARD_TEXT ?>');
            		document.getElementById("show").innerHTML = prevInnerHTML;
            	} else {
            		document.getElementById("show").style.display = "none";
            	}
		        
            } else if(cols[i].value == "26"){
            	if(document.getElementById("show").style.display == "none"){
            		document.getElementById("show").style.display = "block";
            		var prevInnerHTML = new String();
            		prevInnerHTML = document.getElementById("show").innerHTML;
            		prevInnerHTML = prevInnerHTML.concat('<h3 class="h3_text">Lastschrift (Deutschland / Österreich)</h3>');
            		prevInnerHTML = prevInnerHTML.concat('<?php if ($uos_direct_debit == 1){?> ');
            		prevInnerHTML = prevInnerHTML.concat('<div class="payment_box">
					<?php echo BUSINESS_PAYMENT_KONTOINHABER ?>: <?php if (in_array('deb_owner',$checkFieldsDebitDirect)) echo '*';?><br/>
					<input type="text" name="deb_owner" value="<?php if (isset($_REQUEST['deb_owner'])) echo $_REQUEST['deb_owner'];?>"><br/><br/>
					</div>');
					prevInnerHTML = prevInnerHTML.concat('<div class="payment_box">
					<?php echo BUSINESS_PAYMENT_BLZ ?>: <?php if (in_array('deb_bankcode',$checkFieldsDebitDirect)) echo '*';?><br/>
					<input type="text" name="deb_bankcode" value="<?php if (isset($_REQUEST['deb_bankcode'])) echo $_REQUEST['deb_bankcode'];?>"><br/><br/>
					</div>');
					prevInnerHTML = prevInnerHTML.concat('<div class="payment_box">
					<?php echo BUSINESS_PAYMENT_KONTO ?>: <?php if (in_array('deb_account',$checkFieldsDebitDirect)) echo '*';?><br/>
					<input type="text" name="deb_account" value="<?php if (isset($_REQUEST['deb_account'])) echo $_REQUEST['deb_account'];?>"><br/><br/>
					</div>');
					prevInnerHTML = prevInnerHTML.concat('<?php } ?> ');
            		document.getElementById("show").innerHTML = prevInnerHTML;
            	} else {
            		document.getElementById("show").style.display = "none";
            	}
            }
        }
    }
    return true;
}
Der Aufruf ist so

PHP:
<input id="43" onClick="showValue();" type="radio" name="payment" value="43" class="radio" <?php if (isset($_REQUEST['payment']) && $_REQUEST['payment']=='43') echo 'checked';?>>

Aber leider werden die PHP Konstanten nicht angezeigt. Weiss einer woran liegt?

Gruß
Fredolin
 
Moin Fredolin,

könntest du bitte mal posten, was dein Browser dort als Quelltext anzeigt.... ohne die Ausgabe der PHP-Sachen zu kennen, wird die Fehlersuche sonst etwas schwer.
 
Hallo Sven,

also in der Seite wo eigentlich der Inhalt angezeit werden sollte wird nichts angezeigt. Es wird auch keine PHP Fehler im Quellcode angezeigt.
PHP:
Quellcode aussem FireFox
<div class="payment" style="height: 400px;">
    <div class="paymentradio"><input id="24" onClick="showValue();" type="radio" name="payment" value="24" class="radio" ></div>
    <div class="paymentgrafik"><img src="img/modullogo_bp_kk_zw.gif" align="middle" /></div>
    <div class="paymentgrafik">Credit Card (International)</div>
    <div class="layerdiv" id="show" style="display: none;">
          Hier soll das angezeigt werden was im JavaSript steht
    </div> 
    <div class="clear"></div>
    <div class="paymentradio"><input id="26" onClick="showValue();" type="radio" name="payment" value="26" class="radio" ></div>
    <div class="paymentgrafik"><img src="img/modullogo_bp_lv_zw.gif" align="middle" /></div>
    <div class="paymentgrafik">Debit (Germany / Austria)</div>
</div>

Öffne ich die Fehlerkonsole
bekomme ich diese Fehlermeldung:
PHP:
Fehler: unterminated string literal
Quelldatei: http://uosmle.local/scripte/js/showValue.js
Zeile: 25, Spalte: 51
Quelltext:  prevInnerHTML = prevInnerHTML.concat('<div class="payment_box"> 


Fehler: showValue is not defined
Quelldatei: http://uosmle.local/?act=payBusiness&language=en
Zeile: 1

das JavaScript wird in der Indexseite eingebunden.
 
Mmmh,

du hast den PHP-Code anscheinend in einer externen Datei mit der Endung *.js zu stehen.
Hast du den Server so konfiguriert, dass auch *.js-Dateien von PHP geparst werden?(Per default ist das nicht der Fall)
 
Hallo Sven

den PHP Code habe ich in eine externe PHP Datei stehen. Diese binde ich in der Index über include_once mit ein.

PHP:
if(isset($_GET['language']) && $_GET['language'] == 'de'){ 
	include_once('includes/language.germany.php');
} else if(isset($_GET['language']) && $_GET['language'] == 'en'){ 
	include_once('includes/language.english.php');
}

So binde ich die Datei ein. In den JavaScript habe ich Konstanten drinne, die ich in diesen Sprachdateien definiert habe.

Gruß
Matthias
 
Hallo Sevn,

im allerersten Posting habe ich die Datei schon gepostet.
PHP:
das ist die JavaScript Datei
function showValue(){
	//var div = document.getElementById("show");
    var cols = document.getElementsByName("payment");
    for(var i=0; i<cols.length; i++){
        if(cols[i].checked == true){
            if(cols[i].value == "24"){
            	if(document.getElementById("show").style.display == "none"){
            		document.getElementById("show").style.display = "block";
            		var prevInnerHTML = new String();
            		prevInnerHTML = document.getElementById("show").innerHTML;
            		prevInnerHTML = prevInnerHTML.concat('<h3 class="h3_text">Kreditkarte (International)</h3>');
            		prevInnerHTML = prevInnerHTML.concat('<?php echo BUSSINESS_PAYMENT_CCARD_TEXT ?>');
            		document.getElementById("show").innerHTML = prevInnerHTML;
            	} else {
            		document.getElementById("show").style.display = "none";
            	}
		        
            } else if(cols[i].value == "26"){
            	if(document.getElementById("show").style.display == "none"){
            		document.getElementById("show").style.display = "block";
            		var prevInnerHTML = new String();
            		prevInnerHTML = document.getElementById("show").innerHTML;
            		prevInnerHTML = prevInnerHTML.concat('<h3 class="h3_text">Lastschrift (Deutschland / Österreich)</h3>');
            		prevInnerHTML = prevInnerHTML.concat('<?php if ($uos_direct_debit == 1){?> ');
            		prevInnerHTML = prevInnerHTML.concat('<div class="payment_box">
					<?php echo BUSINESS_PAYMENT_KONTOINHABER ?>: <?php if (in_array('deb_owner',$checkFieldsDebitDirect)) echo '*';?><br/>
					<input type="text" name="deb_owner" value="<?php if (isset($_REQUEST['deb_owner'])) echo $_REQUEST['deb_owner'];?>"><br/><br/>
					</div>');
					prevInnerHTML = prevInnerHTML.concat('<div class="payment_box">
					<?php echo BUSINESS_PAYMENT_BLZ ?>: <?php if (in_array('deb_bankcode',$checkFieldsDebitDirect)) echo '*';?><br/>
					<input type="text" name="deb_bankcode" value="<?php if (isset($_REQUEST['deb_bankcode'])) echo $_REQUEST['deb_bankcode'];?>"><br/><br/>
					</div>');
					prevInnerHTML = prevInnerHTML.concat('<div class="payment_box">
					<?php echo BUSINESS_PAYMENT_KONTO ?>: <?php if (in_array('deb_account',$checkFieldsDebitDirect)) echo '*';?><br/>
					<input type="text" name="deb_account" value="<?php if (isset($_REQUEST['deb_account'])) echo $_REQUEST['deb_account'];?>"><br/><br/>
					</div>');
					prevInnerHTML = prevInnerHTML.concat('<?php } ?> ');
            		document.getElementById("show").innerHTML = prevInnerHTML;
            	} else {
            		document.getElementById("show").style.display = "none";
            	}
            }
        }
    }
    return true;


Gruß
Matthias
 
Das kannst du über eine .htaccess-Datei:
Code:
AddType application/x-httpd-php .js
...hängt aber davon ab, ob du die entsprechenden Rechte dafür hast.


einfacher ginge es, wenn du die Datei in showValue.php umbenennst(den Pfad musst du dementsprechend natürlich auch ändern)
 

Neue Beiträge

Zurück