2012-10-10 214 views
0

可能重複:
pass php variable value to javascript如何PHP的參數傳遞給JavaScript

我有一段PHP代碼

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>'; 
    } 
    } 
} 

和我的javascript函數tab_click很簡單:

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

的關鍵部分是在這裏:

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

就不能工作了!所以我改變它是這樣的:

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

它的工作完美,並顯示我的網頁123!我想知道爲什麼會發生?我檢查了html代碼,它確定:

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

好的,我不知道爲什麼?

+0

。無效。在正確的內容中使用手動引號,或使用json_encode()或htmlspecialchars()進行轉義。 – mario

回答

4

你需要在你的JavaScript附加引號字符串參數:

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

在你的測試用例$test = 123;您傳遞一個整數,所以不需要加引號。

編輯

輸出不帶引號(無效的JavaScript):

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

輸出,帶引號:

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

是的!那就對了!感謝Mathieu,但爲什麼? – diligent

+0

@diligent我將HTML輸出添加到我的答案。 'tab_click(a)'*中的參數必須被引用,因爲它是一個字符串。 – Tchoupi

1

如果傳遞$test = 123你的JavaScript它的工作,因爲你傳遞一個整數值。

但是你$letter它是一個字符串,那麼生成的HTML代碼,這是錯誤的:

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

您必須包裝報價''之間的字符串。因此,它應該是:

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

,您應該更改您的代碼:因爲你結束了`的onclick = 「tab_click(A)」'你的第一個樣品中

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

感謝Cirou,因爲我把一個字符串傳遞給一個函數,這就是爲什麼我錯了。謝謝。 – diligent

相關問題