2013-11-02 2 views
0

Что у меня есть:PHP: передать переменную в методе яваскрипта

пытаются передать переменную 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> 

Какая проблема:

В отладчике браузера я вижу это в show метод Я передал всю форму (означает, что имя аргумента равно всей форме).

Вопрос:

Почему это происходит? Как передать имя только имени js-метода?

ответ

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> 

Надеюсь, это поможет.

Смежные вопросы