javascript ajax未获取引用错误函数


javascript ajax uncaught referenceerror function

我在调用此函数时遇到了tittle错误。

<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; ?>;

但它让我在回声中获得了正确的值。为什么会发生这种情况?

php数据中缺少引号,因此生成了无效的javascript。回想起PHP输出的任何内容都必须在javascript上下文中是正确的。

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

将生成

baz = bar;

并且CCD_ 1将被解释为未定义的变量名称。

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

 bar = <?php echo json_encode($foo); ?>;

无论$foo中有什么,它都将始终生成有效的javascript。并产生

baz = "bar";

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

<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>

旁注:

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