如何将php参数传递给javascript [复制]

如何将php参数传递给javascript [复制]

问题描述:

Possible Duplicate:
pass php variable value to javascript

I have a piece of php code

function formLetterTabPage($redirect_url, $letter){
  $test = 123;
  foreach (range('A','Z') as $val) {
    if($val == $letter){
        echo '<li class="a" id="li_'.$letter.'" onclick="tab_click('.$letter.')">'.$letter.'</li>';
    }else{
        echo '<li class="b" id="li_'.$val.'" onclick="tab_click('.$letter.')">'.$val.'</li>';
    }
  }
}

and my javascript function tab_click is quite simple:

function tab_click(f){
  alert(f);
}

the key part is here:

echo '<li class="a" onclick="tab_click('.$letter.')">'.$letter.'</li>';

it cannot work out ! so I change it like this:

$test = 123;
echo '<li class="a" onclick="tab_click('.$test .')">'.$letter.'</li>';

it works perfert, and the page show me 123! I wonder why this happen? And I checked the html code, it ok:

<li class="navi_letter_leftb" id="li_A" onclick="tab_click(A)">A</li>

ok, I don't know why?

可能重复: strong>
将php变量值传递给javascript p> blockquote>

我有一段php代码 p>

  function formLetterTabPage($ redirect_url,$ letter){
 $ test = 123; 
 foreach(range)  ('A','Z')as $ val){
 if($ val == $ letter){
 echo'&lt; li class =“a”id =“li _'。$ letter。'”onclick  =“tab_click('。$ letter。')”&gt;'。$ letter。'&lt; / li&gt;'; 
} else {
 echo'&lt; li class =“b”id =“li_”。  $ val。'“onclick =”tab_click('。letter。')“&gt;'。$ val。'&lt; / li&gt;'; 
} 
} 
} 
  code>   pre> 
 
 

我的javascript函数tab_click非常简单: p>

  function tab_click(f){
 alert(f); 
} 
   code>  pre> 
 
 

关键部分在这里: p>

  echo'&lt; li class =“a”onclick =“tab_click(  ” $字母。 ')“&GT;&LT' $字母。 '; /锂&GT;'; 
 代码>  PRE> 
 
 

它 无法解决! 所以我改变它是这样的: p>

  $ test = 123; 
echo'&lt; li class =“a”onclick =“tab_click('。$ test。')”  &gt;'。$ letter。'&lt; / li&gt;'; 
  code>  pre> 
 
 

它工作正常,页面显示123! 我想知道为什么会这样? 我检查了html代码,确定: p>

 &lt; li class =“navi_letter_leftb”id =“li_A”onclick =“tab_click(A)”&gt; A&lt; /  li&gt; 
  code>  pre> 
 
 

好的,我不知道为什么? p> div>

You need additional quotes in your javascript for string parameters:

echo '<li class="a" onclick="tab_click(\''.$letter.'\')">'.$letter.'</li>';

In your test case $test = 123; you are passing an integer, so the quotes are not needed.

EDIT

Output without quotes (invalid javascript):

<li class="a" onclick="tab_click(a)">a</li>

Output with quotes:

<li class="a" onclick="tab_click('a')">a</li>

If you pass $test = 123 your javascript it's working because you're passing an integer value.

But your $letter it's a string and so the resulting html code it's wrong:

<li class="navi_letter_leftb" id="li_A" onclick="tab_click(A)">A</li>

You have to wrap your string between quotes ''. So it should be:

<li class="navi_letter_leftb" id="li_A" onclick="tab_click('A')">A</li>

and you should change your code to:

echo '<li class="a" onclick="tab_click(\''.$letter.'\')">'.$letter.'</li>';