1

私はここで輪になって回っていて、本当に何かが足りないような気がします...

私のセットアップは基本的にサーバー側でCodeIgniterを使用し、クライアントでBootstrapを使用していますが、それは少し問題があります...

javascript関数内でphp値を呼び出そうとしています。値は、phpコントローラーの1つ内の保護された変数に格納されています。これは、htmlで変数に直接アクセスしているため、そのコントローラーに読み込まれているビューからアクセスできます(したがって、 javascriptも)。

コードはここにあります、それは本当に簡単です:

$(document).ready(function() {
    var UID = "<?php echo $the_user->id; ?>";
    console.log(UID);
});

これは、たとえば「1」のコンソール出力を実行することを期待していますが、実際にはの実際の文字列を出力しています"<?php echo $the_user->id; ?>"。これは、php変数ではなく単純な文字列をエコーし​​ている場合にも発生します。

これは設定の問題かもしれないと思いますが、本当にわかりません。PHP呼び出しから引用符を削除すると、

TypeError: can't wrap XML objects   
console.log(<?php echo $the_user->id ?>);

何か案は?私はこの時点で本当にばかげていると感じます:(

4

2 に答える 2

4

出力に表示<?php echo $the_user->id; ?>されている場合は、ドキュメントがPHPによって解析されていないことを意味します。

ファイル拡張子を確認し、Webサーバー構成で実際にPHPに送信されていることを確認します。

たとえば、.jsファイルにPHPタグを追加した場合、そのタグはPHPに渡されません。Apacheを使用している場合は、次を追加する必要があります。

AddType application/x-httpd-php .js

または、HTMLで変数を設定し、それをパラメーターとして外部Javascriptに送信します。

于 2012-10-02T21:43:34.537 に答える
0

mathieu-imbertは、ファイルがビューとして処理されていないことについて正しいです。これが最初のハードルです。ページが解析されていることを確認してください。

また、PHP変数をjavascriptに貼り付けようとするときは、変数のエスケープ、予期しない値の処理などを考慮する必要があります。幸い、簡単な答えがあります。

$(document).ready(function() {
    var UID = <?php echo json_encode($the_user->id); ?>;
    console.log(UID);
});

PHPデータのシリアル化に関する通常の制限に注意すれば、この方法で任意の複雑なデータをJavascriptに挿入できます。

于 2012-10-02T23:04:34.267 に答える