0

javascriptコードをphp変数に入れ、その後mysqlデータベースに保存し、その後ページにエコーします。javascriptコードをphp変数に保存してページにエコーすることに問題があります。

この方法でjavascriptコードをphp変数に保存しようとしましたが、エラーが発生しました:

$parameter = "<script language='JavaScript'>document.write(geoip_country_name());</script>";

データベースからこのjavascriptコードをエコーするために、私はそのように使用することを考えていました:

$parameterecho = htmlentities($parameter);
echo $parameterecho; 

コードをページにエコーするためのより良い解決策と、コードをphp変数に保存する方法はありますか?

4

3 に答える 3

2

AJAX を使用すると、目的を達成できると思います。jQuery を使用したモックアップは次のとおりです。

$.post(
        save_parameter.php,
        {
            parameter : geoip_country_name()
        });

file save_parameter.php
// save parameter to DB

$.get(
        get_parameter.php,
        function(parameter) {
            alert(parameter);
        }, 'html');

file get_parameter.php
// get $parameter from DB
// echo  $parameter
// exit;

更新

次のように、jQuery を使用して JavaScript を動的にロード/実行できます。

$.getScript("have_javascript_code.php");

最後に:

しかし、javascript 値以上の保存/使用について話しているようです。本気でやりたいなら問題ない。ただし、アプローチを再考し、前のスニペットを利用することをお勧めします。

保存コード:

$parameter   = "<script language='JavaScript'>document.write(geoip_country_name());</script>";
$code        = htmlspecialchars($parameter, ENT_QUOTES);
// insert to DB

出力コード:

// get $code from DB
$code = htmlspecialchars_decode($code, ENT_QUOTES);
echo <<<EOF
<script type="text/javascript">
$code
</script>
EOF;
于 2012-12-27T12:35:25.877 に答える
1

JavascriptとPHPは同じではありません。あなたは考えている、当たり前!もちろんですが、Javascriptは「クライアント側」のテクノロジーであり、PHPは「サーバー側」のテクノロジーです。

最初に.phpページがサーバーで処理され、次に出力が返されるため、JavascriptはPHP変数からのみ読み取ることができます。したがって、変数はすべてJSに出力されます。

ただし、その逆は当てはまりません。Javascriptはサーバー上にあるため、PHP情報にアクセスできません。JS変数をPHPにアクセス可能にする唯一の方法は、必要な変数と値を使用して、POSTまたはGETをサーバーに戻す(.phpを再度呼び出す)ことです。

于 2012-12-27T12:22:11.393 に答える
1

PHPはサーバー上で実行されるため、コードはサーバー上で実行されます。ページが最初に読み込まれると、PHP全体が自動的に実行され$parameter、JavaScriptがクライアント側で実行されるため、ページが読み込まれた後、またはphpが実行された後に開始されます。より可能性が高い。

于 2012-12-27T12:23:54.090 に答える