2

外部のphpファイルからecho関数を使用してJavaScriptで変数を定義するにはどうすればよいですか?

configfile.php、 thejsfile.jsthephpfile.phpがあります

configfile.phpには、次のものがあります。

<?php
$path = 'http://example.com/home.php'; // Set your path
?>

thejsfile.jsには次のものがあります。

... 
if (confirm("Are you sure you want to delete")) {
        $.ajax({
            type: "POST",
            url: "http://example.com/home.php",
            data: dataString,
            cache: false
        });
...

そして、phpfile.phpには次のものがあります。

    <php 
    include "theconfigfile.php";
    ?>

    <html>
    <head>
    <script type="text/javascript" src="thejsfile.js"></script>
    </head>

<body>
...here is the code that uses file thejsfile.js...
</body>
</html>

私はこの方法を使用しました:

... 
if (confirm("Are you sure you want to delete")) {
        $.ajax({
            type: "POST",
            url: "<?php echo $path; ?>",
            data: dataString,
            cache: false
        });
...

javascriptがコードの一部である場合にのみ機能します。そして、私がそれを外部で使用する場合、このように...

<script type="text/javascript" src="thejsfile.js"></script>

...動作しません!ソリューション?

4

7 に答える 7

5

これを行うには、いくつかの方法があります。

PHPで拡張子の付いたファイルを処理し、.jsそこにPHPを挿入するようにWebサーバーを構成できます。もちろん、これは実際に変数を計算する方法が必要であることを意味し、これにより通常のjavascriptコンテンツの提供が遅くなります。

<script>このような要素内のJavascript変数にPHP変数を出力するだけです。

<script type="text/javascript">
var path = "<?php echo $path; ?>";
</script>

path次に、AJAXでこの変数にアクセスします。ほとんどの場合、おそらく2番目のアプローチを使用します。

于 2012-12-05T23:29:13.200 に答える
4

の名前をに変更thejsfile.jsし、その先頭thejsfile.phpに以下を追加すると、PHP用に解析される必要があります。

<?php header("Content-type: text/javascript"); ?>

次に、次のように参照します。

<head>
<script type="text/javascript" src="thejsfile.php"></script>
</head>

もう1つのオプションは.js、PHPのファイルを解析するようにサーバーを設定することです。

于 2012-12-05T23:29:17.153 に答える
2

thephpfile.phpで、

<html>
<head>
<script type="text/javascript">
    var config = { url: '<?= $path; ?>' };
</script>
<script type="text/javascript" src="thejsfile.js"></script>
</head>

次に、JavaScriptのconfig.urlを使用してアクセスできます。

于 2012-12-05T23:26:12.647 に答える
0

このような方法で値を設定できるのは、PHPで処理されるファイルのみです。
外部JavaScriptファイルはPHPによって処理されないため、そのままリンクされます。

于 2012-12-05T23:26:19.123 に答える
0

JSONPを介して別のサーバーに投稿する場合を除いて、サーバーからクライアントにパスを送信する必要がないように、Javascriptにハードコードされた相対パスを使用することを検討してください。

...
    $.ajax({
        type: "POST",
        url: "home.php",
        data: dataString,
        cache: false
    });
....

ただし、これが頻繁に変更されるURLであり、実際に構成可能である必要がある場合は、次のようなスクリプトとしてPHP変数をエコーアウトできます。」

<html>
...
<script src="thejsfile.js" type="text/javascript">
<script type="text/javascript">
    // 'path' is a variable that is defined in thejsfile.js
    path = '<?php echo htmlentities($path)  ?>';
</script>

...

サーバーからクライアントに(特にJavascriptとして)情報を出力するときは常に、スクリプト攻撃を防ぐために(つまり、人々がJavaScriptをコードに挿入できるようにするために)エスケープされることに本当に注意する必要があります。この場合、任意のタイプのhtml文字を許可する理由はありません。

于 2012-12-05T23:40:03.713 に答える
0

外部JSファイルを操作する場合値を非表示フィールドに保存し、JavaScriptを使用してフィールド値を取得できます。

<input type="hidden" name="path" id="path" value="<?php echo $path; ?>" />

そしてjavascriptで(私はjqueryを使用します)

var path = $('#path').attr('value');

もちろん、ページのスクリプトタグに変数を書き込むこともできますが、高度なタイプのパターンを使用すると、その変数にアクセスするのが難しい場合があります。

于 2012-12-05T23:41:04.490 に答える
0
echo "<script type='text/javascript'>var AccomodationInfoForm4 =".$path."</script>";

上記の方法をエコーし​​てみてください。変数にはどこからでもアクセスできます。これはjs、ページ上のすべてのファイルでグローバルに利用できるようになるためです。

于 2017-08-09T06:05:53.197 に答える