未捕获的ReferenceError:未定义user_id

时间:2014-12-10 08:26:06

标签: javascript php jquery mysql symfony

我需要什么

  • 我需要从href调用函数。

html代码

 <a href="#" onclick="peopleattending('.$_COOKIE['user'].', '.$_COOKIE['evnt_id'].');">

js code

         <script>

        $(document).ready(function()
        {

            function peopleattending(user_id,event_id)
            {

                console.log(user_id);
                console.log(event_id);

                 $.ajax({
                    type:"GET",
                    url:"{{get_hash_attend(user_id,event_id) }}", 
                     success: function(data)
                     {
                           $("#attend").text("Attending");



                    }
                });

            }

             peopleattending(user_id,event_id);


         });

        </script>

问题

  • 问题未捕获的ReferenceError:userattend(user_id,event_id)中未定义user_id;
  • 虽然我得到的值是user_id = 112223和event_id = 9。
  • 如果我在url:get_hash_attend(user_id,event_id)中传递函数中的值错误,则会出现相同的错误。

1 个答案:

答案 0 :(得分:2)

user_idevent_id仅定义为peopleattending函数中的参数。当你调用这样的代码时:

peopleattending(user_id,event_id);

你基本上说

peopleattending(undefined,undefined);    

您可以在javascript块中的pageload上设置变量,而不是在锚标记的函数参考中

<script>
    var _user_id = '<?php $_COOKIE['user'] ?>';
    var _event_id = '<?php $_COOKIE['evnt_id'] ?>';

    $(document).ready(function()
    {
        function peopleattending(user_id,event_id)
        {
             console.log(_user_id);
             console.log(_event_id);

             $.ajax({
                type:"GET",
                url:"{{get_hash_attend(user_id,event_id) }}", 
                success: function(data)
                {
                       $("#attend").text("Attending");
                }
            });

        }

        peopleattending(_user_id,_event_id);

     });
</script>

然后你的锚标签看起来像这样

<a href="#" onclick="peopleattending(_user_id,_event_id);">

对于Symfony:

<script>
    var _user_id = '{% app.request.cookies.get('user') %}';
    var _event_id = '{% app.request.cookies.get('event_id') %}';

我注意到你的问题中有一个拼写错误,evnt_id而不是event_id。如果此错误也在您的代码中,那么您需要修复它或在javascript中更改它

如果你的变量是数字而不是字符串,你可以删除引号

<script>
    var _user_id = {% app.request.cookies.get('user') %};
    var _event_id = {% app.request.cookies.get('event_id') %};

如果您想使用JQuery直接阅读cookie,可以使用Cookie plugin for jQuery

<script>
    var _user_id = $.cookie("user");
    var _event_id = $.cookie("event_id");

虽然此时你可以删除变量并直接在需要的地方调用$.cookie("user")