动态变量从 PHP 插入到 DOM 中.在将该变量从 DOM 传递到 Javascript 时遇到问题


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

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

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

对于投票系统,我需要将某些变量传递到 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="answerswers-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);">';

爪哇语

$(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);
    });
});

这是一个向函数发送两个变量的更新。

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

    你调用函数的方式
  1. 与调用按钮相同,所以这就是为什么消息说它不是一个函数,它是一个元素。

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