从PHP插入DOM的动态变量。无法将该变量从DOM传递到Javascript

时间:2015-01-06 16:01:47

标签: javascript php jquery html codeigniter

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

从数据库中提取答案,然后在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框架

任何帮助非常感谢

2 个答案:

答案 0 :(得分:3)

使用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 :(得分:1)

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

  1. 你的功能与你的按钮相同,所以这就是为什么消息说它不是一个功能,它是一个元素。

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