2012-04-24 13 views
0

PHPからjsに変数を転送しようとすると、本当に混乱しました。phpからjsに変数を転送する

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

しかし、私は、例えば、この変数を変換したい場合は、私の質問は、次のとおりです:私は、例えば、ID
を使用して値を取得しようとすると、 すべてが正常である

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

この変数に:

var id; 

この質問はあなたのためではなく、私のために多分簡単な...馬鹿かもしれません:P
私はそれを見て、唯一私が探したこのどこかのようなものを発見した:

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

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

それは同じ値をダウン渡すように影響がありますか?

ありがとうございます!

+0

上記のサンプルは正しいです。私はあなたの質問を理解するか分からない。 –

+0

@Paul Im申し訳ありませんが、私の変数が未定義となることがあります。私の質問は、私が正しいと書いた方法ですか?それとももっと良い方法がありますか?私はjsのすべてに新しいと私は混乱して... – Baruch

+0

ページのビューソース、またはalert(num)のようなものを表示すると、numの値が表示されます。 – jimiyash

答えて

1

JSONとしてのエンコーディングは、それが有効なJavaScriptリテラルであることを保証します。

var num = <?php echo json_encode($number) ?> 
+0

なぜこれは 'json_encode'を使っているのですか? – Jasper

+0

@ジャスパー:必ずしも数字であるとは限りません。 –

+2

@ JasperあなたはJosephのメソッドでJSエラーの原因となる数字の代わりに文字列を持つことができます。私はjsonのエンコードは少し残念だと思うし、それが文字列であることを知っていれば、私は通常、 '' var str = "<?php echo $ str;?>" '、二重引用符。あなたの終わりを忘れないでください ';' @ Ignacio ;-) –

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> 
-1

あなたが構文的に有効なJavaScriptを生成する必要があります。 PHPは、生成しているページのどの部分にもテキストをエコーすることができますが、実際にはUSABLEのテキストであるとは限りません。あなたのケースでは、あなたが;を忘れてしまったので、あなたの生成はJavaScriptが実際に構文エラーです:あなたがテキストを出力しているとき

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

ものと同じ種類のが発生します。あなたは変数に誰かの名前を格納している場所考えてみましょう:

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

このはOKに見えるが、それは実際にはさらに別の構文エラーを生成します:

var name = Miles O'Brien; 

全体の文字列の前後に引用符がありません埋め込まれた見積もりはJavaScriptの文字列を開始し、未定義の変数 "Miles"、未定義の変数 "O"、および終了していない文字列リテラルについてJSインタープリタが不平を言うようにします。

代わりに、PHPはされている必要があります:あなたは構文的に有効なJavascriptの値を埋め込んだ

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

JSONのカプセル化を保証します。

+0

セミコロン*はオプションですので、あなたが示唆している問題ではありません。 – Jasper

関連する問題