javascript ajax uncaught referenceerror功能

时间:2013-06-23 21:50:34

标签: php javascript function variables referenceerror

我在调用此函数时出现标题错误。

<script type="text/javascript">     
    function upvote(user, id){
        fazer = <?php echo $doornot ?>;
        if( fazer == 'true'){
            window.location = "http://www.dawnsource.com/forums/register.php";
        }else {
            user = <?php echo $user; ?>;
            id = <?php echo $_GET[id]; ?>;
             $.ajax({
             url: 'scripts/upvote.php',
             type: 'post',
             data: 'user='+user+'&id='+id,
            success: function() 
             {
              alert('success, upvote completed ');
          }, error: function()
          {
              alert('something went wrong, rating failed');
          }
        });
        }

    }
</script>

错误正在发生:

user = <?php echo $user; ?>;

但是它让我在回声中得到了正确的价值。为什么会这样?

2 个答案:

答案 0 :(得分:1)

你的php数据周围缺少引号,所以你生成了无效的javascript。记住......无论PHP输出什么,都必须在javascript环境中正确。

<?php
$foo = 'bar';
?>

<script>
baz = <?php echo $foo ?>;
</script>

将生成

baz = bar;

bar将被解释为未定义的变量名称。

正确的解决方案是简单地通过PHP中的json传递所有内容:

 bar = <?php echo json_encode($foo); ?>;
无论$ foo中有什么内容, 始终会生成有效的javascript。并产生

baz = "bar";

答案 1 :(得分:0)

如果true是,则

$doornot应为布尔值。此外,在PHP和JavaScript中,字符串引号在返回值时会被剥离。您的JavaScript会看到另一个变量,而不是String。尝试:

<script type="text/javascript">     
  function upvote(){
    var fazer = <?php echo $doornot ?>;
    if(fazer == true){
        window.location = 'http://www.dawnsource.com/forums/register.php';
    }
    else {
      var user = '<?php echo $user; ?>';
      var id = '<?php echo $_GET[id]; ?>';
      $.ajax({
        url: 'scripts/upvote.php',
        type: 'post',
        data: 'user='+user+'&id='+id,
        success: function(){
          alert('success, upvote completed');
        },
        error: function(){
          alert('something went wrong, rating failed');
        }
      });
    }
  }
</script>

旁注:

我在user函数中看不到idupvote参数的用法,因为您从PHP获取这些值,并且仅在条件下。此外,您应该在JavaScript中使用关键字var,除非您希望这些变量是全局的。