从php回显时JS变量未定义

时间:2013-11-17 23:45:01

标签: jquery ajax

PHP:

<?php

    $user_info = getInformation(); // gets user's information and puts it into an array, $user_info[0] is their ID, $user_info[1] is their username, $user_info[2] is their display name

?>

JQuery的:

$(document).ready(function() {
    $(document).on("click", ".btn", function(event) {
        event.preventDefault();
        var post = $(this);
        $.ajax({
            url: 'assets/script.php',
            type: 'POST',
            data: { user_id: <?php echo $user_info[0] ?>, display_name: <?php echo $user_info[2] ?> },
            success: function(data) {
                alert(data);
            }
        });
    });
});

但是,当我点击按钮(.btn)时,它会在控制台中显示以下错误:

ReferenceError: Test is not defined

Test是收到此错误的用户的显示名称。

怎么了?

1 个答案:

答案 0 :(得分:2)

因为你错过了PHP变量周围的单引号,所以你是echo

data: { user_id: '<?php echo $user_info[0] ?>', display_name: '<?php echo $user_info[2] ?>' }

id有效,因为它是一个整数,但test将被视为变量。这实际上是javascript看到的:display_name: test这意味着它正在寻找变量test。请注意,您正在尝试创建display_name: 'test'

然而,我发现所有这些都是一种可怕的做法。我从不使用php生成js,但替代方案超出了你的问题的范围。您至少可以将这些值的插入移动到js的开头,以便它们与代码的其余部分隔离。如果遇到这样的问题,将来会让你更轻松。