2017-10-18 17 views
2

何らかの理由で、次のコードを使用してPHP変数をjavascriptに渡すとき。PHP変数からJavascriptへの出力PHPコード

JS:

var myVar = "<?php echo $pass ?>"; 
document.getElementById("output").innerHTML = myVar; 
console.log(myVar); 

そしてPHP:

<?php 
$myfile = fopen("testfile.txt", "r"); 
$pass = fread($myfile,filesize("testfile.txt")); 
fclose($myfile); 
?> 

しかし、その代わりに、ファイルにテキストを出力するには、それが生のPHPコードを出力し、実行していない "これは、いくつかのテキストです"それは:

<p id="output"><!--?php echo $pass;?--></p> 
0: "

インスペクタのp要素を見て、それがこれです
+0

これは、生のPHPコードを出力しますか?どの部分が解釈されていないのですか? – Wndrr

+0

JavaScriptを式から外してみることはできますか?あなたのPHPが必ずしも実行されていないように思えます。 '

'のようなdivがあるとどうなりますか?実際に ""を出力すると、あなたのPHPが処理されていないことが問題になります。 – WOUNDEDStevenJones

+2

jsコードのファイルに '.phtml'や' .php'のようなファイル拡張子が付いていることを確認してください – mega6382

答えて

3

クライアントのコンピュータで実行されるjavascriptファイルにPHPコードを挿入することはできません。 PHPはサーバ側で解釈され、一般には.phpファイルでのみ解釈されます。その後、

0

あなたは出力にあなたができるファイルに変数を望んでいた場合は、

<?php 
$myfile = fopen("testfile.txt", "r"); 
$pass = fread($myfile,filesize("testfile.txt")); 
fclose($myfile); 
$string = "var myVar = ".$pass."; 
document.getElementById('output').innerHTML = myVar; 
console.log(myVar);" 

とJavaScriptファイルへ$stringを書き込みます。

1

ここで私は、コードが正常に私の地元のボックスに実行するようにしてうまく管理方法は次のとおりです。

js_php.php内容:

<html> 
<head><title></title></head> 

<body> 
<div id="output"></div> 

<?php 
$myfile = fopen("./text_file.txt", "r"); 
$pass = fread($myfile,filesize("text_file.txt")); 
fclose($myfile); 
?> 

<script> 
var myVar = "<?php echo $pass ?>"; 
document.getElementById("output").innerHTML = myVar; 
console.log(myVar); 
</script> 

</body> 
</html> 

text_file.txt内容:

Just another textfile :) 
は、

js_php.phpの結果HTMLコード:

<html> 
<head><title></title></head> 

<body> 
<div id="output"></div> 


<script> 
var myVar = "Just another textfile :)"; 
document.getElementById("output").innerHTML = myVar; 
console.log(myVar); 
</script> 

</body> 
</html> 

コードは動作しますが、PHPからJavaScriptへのデータをより洗練された方法で高速に渡すことができます。次のようにOPは、クエリ文字列の一部としてデータを渡すことができた:

改訂js_php.php

<?php 
$myfile = fopen("./text_file.txt", "r"); 
$pass = fread($myfile,filesize("text_file.txt")); 
fclose($myfile); 
header("location: js_php.html?" . urlencode("qs=$pass")); 
exit; 

js_php.html:

<html> 
<head><title></title></head> 

<body> 
<div id="output"></div> 
<script> 
var qs = location.search; 
var data = decodeURIComponent(qs); 
var split = data.split("=")[1]; 
split = split.replace(/\+/g," "); 

document.getElementById("output").innerHTML = split; 
console.log(data); 
</script> 

</body> 
</html> 

注:PHPとJavaScriptないために同じ方法でスペース文字をエンコードしないでください。デコードされたJavaScriptはスペース文字で置き換える必要がある "+"文字を持ちます。これを行うために、正規表現はすべてのデータをグローバルに置き換えます。

0

まったく新しい楽しみの世界へようこそ。ここでの答えのすべてが指摘しているように、PHPはクライアント側のサーバー側とJavaScript上で発生します。あなたのコンピュータ上でページを開くと、多くのhtmlがサーバ上に生成され、あなたのコンピュータ上で何か起こります(あなたのブラウザはcssを解釈してjavascriptを実行します)。それはそれぞれサーバー側とクライアント側です。

phpを使ってjavascriptを生成することができます。これはslevy1が非常に有益に実証したものです。それは不思議に思えるかもしれませんが、前述の2つの側面を混在させると、サーバーからテキストをリロードすることができますか?

もう1つの方法は、javascriptで情報を要求するサーバーにメッセージを送信し、それに応じて動作させることです。私はAJAXについて話している。ここではそれをセットアップする方法を説明W3のチュートリアルです:

https://www.w3schools.com/xml/ajax_intro.asp

あなたはjqueryのを使用している場合、それが容易になります:

http://api.jquery.com/jquery.ajax/

それは単にいくつかのPHPを貼り付けるほど直感的ではありませんいずれかの方法をPHPでjavascriptを生成していない限り、javascriptファイルに追加します。プロジェクトに幸運を祈る!

関連する問題