0

変数をphpからjsに転送しようとしたとき、私は本当に混乱しました。
たとえば、IDを使用して値を取得しようとすると、すべて問題ありません。

var name = $("#name").val();

しかし、私の質問は、たとえばこの変数を変換したい場合です:

$id = 182938; //the id of the user

この変数に:

var id;

この質問はばかげているかもしれません...あなたにとっては簡単かもしれませんが、私にとってはそうではありません:p
調べてみたところ、探していた場所で次のようなものしか見つかりませんでした:

<?php
$number = rand();
?>

<script language="javascript">
var num = <?php echo $number ?>
</script>

値を渡すのと同じ影響がありますか?

ありがとう!!

4

3 に答える 3

1

そうではありません。JSON としてエンコードすると、有効な JavaScript リテラルであることが保証されます。

var num = <?php echo json_encode($number) ?>
于 2012-04-24T00:42:46.730 に答える
0

コードが行うことは次のとおりです。

<?php
    $number = rand();  //assign random number to $number. let's say it's "3"
?>

//then these are printed on the page normally
<script language="javascript">
    var num = <?php echo $number ?> //the $number is echoed at this position
</script>

そしてブラウザは以下を受け取ります:

<script language="javascript">
    var num = 3;
</script>
于 2012-04-24T00:43:46.507 に答える
-1

構文的に有効なJavaScriptを生成する必要があります。PHPは、生成しているページの任意の部分にテキストをエコーできますが、それが実際に使用可能なテキストであることを必ずしも意味するわけではありません。あなたの場合、あなたはを忘れている;ので、生成されたjavascriptは実際には構文エラーです:

var num = <?php echo $number ?>;
                               ^--- missing

テキストを出力するときにも同じようなことが起こります。誰かの名前を変数に格納する場所を検討してください。

<?php
   $name = "Miles O'Brien"; // <-- note the single quote
?>
<script>
   var name = <? php echo $name ?>;
</script>

これは問題ないように見えますが、実際にはさらに別の構文エラーが生成されます。

    var name = Miles O'Brien;

文字列全体を引用符で囲むことはなく、埋め込まれた引用符はjavascriptで文字列を開始し、JSインタープリターが未定義の変数「Miles」、未定義の変数「O」、および終了していない文字列リテラルについて文句を言うようにします。

代わりに、PHPは次のよ​​うになっているはずです。

 var name = <? echo json_encode($name) ?>;

JSONカプセル化により、構文的に有効なJavascript値が埋め込まれていることが保証されます。

于 2012-04-24T00:51:06.613 に答える