как вызвать функцию javascript со стороны клиента при клике на якорь - PullRequest
0 голосов
/ 19 января 2012

У меня есть образец функции javascript ('textValue'), и я должен вызывать его на стороне сервера при щелчке якоря. Я попробовал ниже код

string text="xyz";
anchor.Attributes.Add("onclick","javascript:sample('"+text+"');

но значение текста назначается неправильно. Закодированная строка добавляется. Результат в представлении источника выглядит как

javascript:sample('xyz')

Но мне нужен javascript: sample ('xyz')

Ответы [ 2 ]

0 голосов
/ 19 января 2012

Интересно, вы могли бы просто сделать это:

string text="xyz";
anchor.Attributes.Add("onclick", function(){ sample(text); } );

Что это делает?Ну, обработчик onclick принимает функцию без аргументов, верно?То есть , что делать, если кто-то нажимает на ссылку.Если вы кодируете это вручную в HTML, вы можете использовать javascript:a_statement_goes_here для описания кода для запуска.Я ожидаю, что браузер просто создаст функцию из этого.Поскольку вы назначаете это в JavaScript, вы должны сделать это самостоятельно (если вы не напишите в документ - это может сработать) и назначить функцию.Но у вас еще нет такой функции - у вас есть одна sample, которая принимает аргумент - следовательно, анонимная функция закрывает аргумент text.

Это основано на предположении, что вышеприведенноена самом деле клиентский код.Я был бы очень удивлен, если бы JS не позволил вам назначить функцию атрибуту.На самом деле, я думаю, что проблема, с которой вы сталкиваетесь, заключается в том, что JavaScript пытается быть очень умным и убедиться, что присвоение строки останется строкой - вот почему ваш ' был закодирован.

Идитерасскажи как все прошло.Та!

0 голосов
/ 19 января 2012

Какой язык сервера / сервера вы используете? PHP? Используете ли вы какие-либо рамки (Zend, CakePHP ...)?

На стороне JS сделайте что-то вроде этого:

Вариант 1

<a href="/a_page" onclick="sample('text');">Test</a>

Вариант 2

<a href="/a_page" id="clicky-clack-link">Test</a>
<script type="text/javascript">
    document.getElementById('clicky-clack-link').onClick = function() {
        sample('test');
    };
</script>

Примечание: Также проверьте jQuery , если вы этого не сделали.

...