개발 Q&A

제목 Uncaught SyntaxError: Invalid or unexpected token 에러가 발생하는데요
카테고리 PHP
글쓴이 그동안 작성시각 2019/01/02 09:52:12
댓글 : 10 추천 : 0 스크랩 : 0 조회수 : 14768   RSS

스크립트 if문이 실행되지 않고, Uncaught SyntaxError: Invalid or unexpected token 에러가 발생하는데요.
 
recommend_visitor_id : "<?php echo $_COOKIE['recommend_visitor']; ?>" ,     <===== 이부분이 문제인 듯 합니다
recommend_visitor_id : '1234567' ,    <==== 임의의 값을 박으면 문제없이 동작합니다.
 
위 경우를 봐서 예상은...php 문자열 코딩이 잘못된 것 같습니다.
 
아시는 분 답변 좀 부탁 드립니다~~^^
 
-------------------------------------------------------
    else if ( (recommender_id == true) && (cookie == true) )                                
  {  
      $(document).ready(function() {                                                     
          $.ajax ({                                                                       
            url : "/project/recommend_relation",
            type : "POST",
            dataType : "json",
            data : {
             rbs_id : <?php echo $this->uri->segment(3) ?> ,
             recommend_visitor_id : "<?php echo $_COOKIE['recommend_visitor']; ?>" ,
             recommender_id : <?php echo $_GET['id']; ?> ,
             },
          success : function(result)
          { 
            alert("추천관계를 DB에 저장 했습니다");   
          },
          error : function(request,status,error)     
          {
                    alert(request.status + " 에러가 발생해서 추천관계를 업데이트 하지 못했습니다");
                }
          })          
      });
  }
 다음글 domain.com/abc와 같은 상대 경로로 다른 I... (6)
 이전글 MVC 구조에서의 라이브러리의 모델 접근 관련 질문입니... (2)

댓글

배강민 / 2019/01/02 10:07:42 / 추천 0

해당 코드를 브라우저상에서 소스보기하면 제대로 값이 박히긴 했나요?

혹시 .js 자바스크립트 파일에 사용하신건 아닌가요? 만약 그렇다면 .js 에서도 php가 동작하게 서버 설정을 해야하지만 추천하진 않고요.

느낌적으로는 <?php echo $_COOKIE['recommend_visitor']; ?> 이게 그대로 박혀있을듯한데말이죠

그동안 / 2019/01/02 10:16:15 / 추천 0
소스보기 하니까 이렇게 나와 버렸네요 ㅠㅠ
 
 
    else if ( (recommender_id == true) && (cookie == true) )                                
{  
    $(document).ready(function() {                                                      
        $.ajax ({                                                                       
        url : "/project/recommend_relation",
        type : "POST",
        dataType : "json",
        data : {
           //"csrf_test_name" : getCookie('csrf_cookie_name'),
        rbs_id : 6 ,
        recommend_visitor_id : "<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
 
<h4>A PHP Error was encountered</h4>
 
<p>Severity: Notice</p>
<p>Message:  Undefined index: recommend_visitor</p>
<p>Filename: project/project_detail_v.php</p>
<p>Line Number: 516</p>
 
</div>" ,   
   recommender_id : 1 ,
   },
    success : function(result)
    {
    alert("추천관계를 DB에 저장 했습니다");   
    },
    error : function(request,status,error)     
    {
                    alert(request.status + " 에러가 발생해서 추천관계를 업데이트 하지 못했습니다");
                }
        })         
    });
}
kaido / 2019/01/02 10:19:43 / 추천 0

메세지만 봐서는 $_COOKIE['recommend_visitor']; 값이 그냥 없는 같습니다. 정확히는 value 보다는 key 값이 없는것 같습니다.

var_dump($_COOKIE['recommend_visitor']);  찍어보세요

가리비 / 2019/01/02 10:22:15 / 추천 0

키값이 recommend_visitor 가 아니구 recommend_visitor_id 아닐까요? ㅎ

그동안 / 2019/01/02 10:28:14 / 추천 0

if ( (recommender_id == true) && (cookie == false) ) { 블라블라~~

}

else if ( (recommender_id == true) && (cookie == true) ) { 블라블라~~

}

 

지금 보니까, if 조건에서 else if 조건의 <?php echo $_COOKIE['recommend_visitor']; ?>이 실행되는 것 때문에 Undefined index: recommend_visitor가 뜨는것 같습니다.

else if 조건에서는 recommend_visitor 값이 없으니 당연한 결과 인 듯 합니다.

else if가 왜 실행되는지 모르겠네요 ;;

엽토군 / 2019/01/02 14:02:11 / 추천 0

cookie 는 존재할 것 같고, recommender_id 도 존재할 것 같네요.

브라우저 개발자콘솔 보시면 쿠키 어떻게 저장돼 있는지 알 수 있는데 거기에 recommend_visitor 쿠키가 있나요?

그동안 / 2019/01/02 14:26:57 / 추천 0

recommend_visitor 없는 상태에서 에러가 발생합니다.

근데 else if 조건문에 쿠키가 있을때만 처리하라고 했는데,,, 조건문과 상관없이 "<?php echo $_COOKIE['recommend_visitor']; ?> 이 부분이 실행되어 버리는건지요?

 

엽토군 / 2019/01/02 14:53:45 / 추천 0

조건문과 상관은 있죠. 조건 충족이 되는 블록을 실행하려고 봤는데 거기에 뭔가 문제 있는 명령이 적혀 있으면 에러가 나는 거니까요. 그리고 "없는 쿠키"의 내용을 가져오라는 명령은 당연히 에러가 나는데...

말씀하신 대로라면 recommend_visitor라는 이름의 쿠키는 실제로도 존재하지 않으니, $_COOKIE['recommend_visitor']는 없는 쿠키를 찾으라는 명령이고, 이건 문제가 있으니까 에러가 나지요.

어딘가에서 recommend_visitor 라는 키의 쿠키를 미리 만들고 있는지 확인해 주세요. 에러가 꼴보기 싫고 recommend_visitor_id 컬럼에 null을 넣을 수 있다면 그냥 이렇게 기본값을 주어서 쓰시길 추천합니다.

<?php echo isset($_COOKIE['recommend_visitor']) ? $_COOKIE['recommend_visitor'] : null ?>
그동안 / 2019/01/03 18:01:28 / 추천 0

엽토군님, 대박! 명쾌한 답변 감사홥니다^^

일단 알려주신 코드를 삽입하니 문제없이 돌아가네요 ㅎ

다만, 제가 초보라 설명주신 내용을 알듯하면서도....ㅋ 모르겠고..ㅋ 그러네요. 남겨주신 답글 곰곰히 새겨서 공부해 보겠습니다

 

kaido / 2019/01/03 18:38:17 / 추천 0

코딩 스타일부터 개선하셔야 합니다 ㅎㅎ

 

if 문 조건에 걸리니  변수값에 값이 없어도 상관없어!

 

안좋은 코딩스타일 입니다.

모든 변수는 명시적 이여야만 합니다.

어디서 왔는지와, 쿠키 같은 값은 언제든 사라질수 있으니 값이 있는지 없는지 체크해줘야 합니다.

isset 함수는 빈 배열 값을 체크를 하죠.

빈 배열이나 빈 변수 값에 대한 디폴트 값을 선언 해두는 습관은 필수입니다.

 

저도 처음에 슬쩍 봐서 잠시 착각을 했는데...

 

js 안에서 if 조건문으로 php 변수값을 컨드롤 할수 없습니다. if 조건 자체가 걸리지 않습니다.

 

js 와 php는 전혀 다릅니다.

js가 실행되기도 전에 php 먼저 실행되서 값을 출력해 버립니다.

실제 브라우저의 호출 순서를 차곡차곡 따라가 보시면 왜 문제가 일어났는지 알수 있습니다.