2013-06-23 2 views
0

이 함수를 호출 할 때 실수가 발생합니다.javascript ajax uncaught referenceerror 함수

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

를하지만 나에게 에코의 오른쪽 값을 받고 :

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

오류가 진행된다. 왜 이런 일이 일어나는 걸까요?

+0

'user = "";'시도하십시오. PHP 태그 따옴표는 – bystwn22

+0

에 적용됩니다. 덕분에) – user2469440

+0

@ MarcB의 대답을 참조하십시오, 자바 스크립트 변수 중 일부는 따옴표가 필요합니다. 그렇지 않으면 문법 오류 – bystwn22

답변

1

PHP 데이터 주위에 따옴표가 누락되어 잘못된 자바 스크립트가 생성됩니다. 기억하십시오 ... PHP가 출력하는 것은 javascript 컨텍스트에서 정확해야합니다.

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

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

baz = bar; 

를 생성하는 것입니다 및 bar은 정의되지 않은 변수 이름으로 해석됩니다.

적절한 해결책은 PHP에서 JSON으로 통해 모든 것을 전달하는 것입니다 : 은 항상에 상관없이 $ foo는에 무엇이 유효한 자바 스크립트를 생성하지 않습니다

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

. 및 $doornot 경우

baz = "bar"; 
0

true 부울한다 생산하고 있습니다. 또한 PHP와 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> 

사이드 참고 :

난 당신이 PHP에서 해당 값을 받고 있기 때문에, 당신의 upvote 기능에 user 또는 id 인수에 대한 사용을 참조 만하는 조건에서하지 않습니다. 또한 해당 변수를 전역 변수로 사용하지 않으려면 JavaScript에 var 키워드를 사용해야합니다.

관련 문제