从 PHP 插入到 DOM 的动态变量。将该变量从 DOM 传递到 Javascript 时遇到问题

dynamic variable inserted from PHP into DOM. Having trouble passing that variable from DOM to Javascript

我正在尝试创建一个系统,人们可以在其中对问题的答案进行投票。

答案是从数据库中获取的,然后显示在 foreach 中。

对于投票系统,我需要将某些变量传递给 JS 来做一些 AJAX 魔术,但是我遇到了将变量传递给 JS 的第一个障碍。

目前代码如下所示:

<?php
            if ($answers->num_rows() == 0) {
                echo '<p>Be the first to answer this question!</p>';
            } else {
                foreach ($answers->result() as $row)
                {
                    echo '<div class="answers-to-question">';
                    echo '<form>'; //form for the purpose of voting
                    echo '<input type="hidden" name="a_id" value="'.$row->a_id.'">'; //pass this to voting script
                    echo '<input type="hidden" name="u_id" value="'.$row->username.'">'; //pass this to voting script
                    echo '<pre>'.$row->answer.'</pre>';
                    echo '<p class="green">answered '.$row->timestamp.' by <i class="green">'.$row->username.'</i></p>';
                    echo '<input type="button" name="upvote" value="upvote" onClick="upvote(this.form.u_id);">';
                    echo '</form>';
                    echo '</div>';

                }
            }               
            ?>

所以我有一个按钮,点击它应该在 JS 函数中传递变量

按钮

echo '<input type="button" name="upvote" value="upvote" onClick="upvote(this.form.u_id);">';

Javascript

$(document).ready(function(){

        function upvote(username){

            console.log(username);

        }
    });

这不起作用,我收到错误消息:

Uncaught TypeError: object is not a function   onClick

如果有帮助,我正在使用 Codeigniter 和 JQuery 框架

非常感谢任何帮助

全部使用 jQuery 而不是使用内联 JavaScript -

$(document).ready(function(){

    function upvote(username){
        console.log(username);
    }

    $('input[name="upvote"]').click(function() {
        var username = $(this).parent('form').find('[name="u_id"]').val();
        upvote(username);
    });
});

EXAMPLE

这里是 UPDATE 向函数发送两个变量。

只是为了补充一些信息,代码有两个问题:

  1. 您调用函数的方式与调用按钮的方式相同,所以消息说它不是函数,而是元素。

  2. 该函数是在 de .ready() 语句中声明的,因此该函数不存在。您必须在 ready() 语句之前声明它。