2013-11-02 48 views
0

我有什麼:PHP:傳遞變量JavaScript方法

試圖通過變量以這樣的方式JavaScript方法:

$name = (string) $form->attributes()->name; 
$show = 'show("'.$name.'")'; 
echo '<input type="radio" onclick="'.$show.'">'.$form['description'].'<br />'; 
print_r($show); // show("feedback") 
... 
<script> 
function show(name) { 
    //DEBUG HERE! 
    ... 
} 
</script> 

什麼問題:

在瀏覽器的調試器中我可以看到顯示方法我已經通過了整個表單(意味着參數名稱等於整個表單)。

問:

它爲什麼會發生?如何傳遞給js-method表單的名稱?

回答

2

我認爲你只是缺少它周圍的一些報價:

echo '... onclick="show(\"'.$name.'\")> ...'; 

注意\"我把周圍$name。在你的代碼中,如果$name = "Foo",它會寫show(Foo)而不是show("Foo")

+0

我編輯了我的代碼。還是行不通。請參閱新版本 – volodymyr3131

+1

現在,您將輸出'onclick =「show(」...「)」',這不起作用,因爲您無法在兩個地方使用''' –

+0

是的,謝謝。炒菜鍋! – volodymyr3131

0

我想你並沒有正確地轉義字符串以供JS函數使用。嘗試逃避這樣的字符串:

$name = 'feedback'; 
$description = 'description'; 

//like this 
echo '<input type="radio" onclick="show('. "'" . $name . "'" . ')">' . $description . '<br/>'; 

// or like this 
echo "<input type=\"radio\" onclick=\"show(' . $name . ')\">" . $description . "<br/>"; 

<script> 
function show(name) { 
    alert(name); 
} 
</script> 

我希望這有助於。