2016-08-07 3 views
2

내가이아약스 구문 : catch되지 않은 구문 에러 : 예기치 않은 식별자

Uncaught SyntaxError: Unexpected identifier error

무엇입니까, 왜? 구문을 올바르게 사용했다고 생각하십니까?

// I've revised it 
var json; 
json = '{"1438905600":0,"1438992000":0}'; 
setTimeout($('#example-heatmap').each(function() { 
    if(json != null){ 
    var obj = $.parseJSON(json); 
    var now = new Date(); 
    new CalHeatMap().init({ 
     data: obj, 
     start: new Date(2016, 0), 
     cellSize: 11, 
     range: 9, 
     domain: 'month', 
     domainLabelFormat: '%Y-%m', 
     itemSelector: '#example-heatmap', 
     legend: [1, 3, 5, 7], 
     legendColors: { 
     min: '#efefef', 
     max: 'steelblue', 
     empty: '#efefef' 
     }, 
      tooltip: true 
     //start: new Date(now.getFullYear(), now.getMonth() - 9) 
    }); 
    } else { 
     setTimeout(arguments.callee, 100); 
    } 
})); 
+0

HTML의 'script' 태그에이 태그가 있습니다. 맞습니까? 별도의 자바 스크립트 파일에 없습니까? –

+4

확실히 오류가 어떤 라인에 오류가 있음을 지적합니다 - 게시 한 코드가 그 오류를 전혀 내지 못하기 때문에 –

+0

죄송합니다. – syui

답변

0

에 주어진

var tmp = content.replace('<![CDATA[').replace(']]>'); 

.replace()searchvaluenewvalue 기대하지만, setTimeout은 함수 나 자바 스크립트 코드 블록을 포함하는 문자열을 기대하고있다. jQuery#each도 반환하지 않습니다.

반환되는 값이 문자열로 변환되고 이것이 구문 오류의 원인입니다.

jQuery#each에 전화를 포함하는 람다 함수를 작성,이 문제를 해결하려면 다음

setTimeout(function() { 
    $('#example-heatmap').each(function() { 
     if (json != null) { 
      var obj = $.parseJSON(json); 
      var now = new Date(); 
      new CalHeatMap().init({ 
       data: obj, 
       start: new Date(2016, 0), 
       cellSize: 11, 
       range: 9, 
       domain: 'month', 
       domainLabelFormat: '%Y-%m', 
       itemSelector: '#example-heatmap', 
       legend: [1, 3, 5, 7], 
       legendColors: { 
        min: '#efefef', 
        max: 'steelblue', 
        empty: '#efefef' 
       }, 
       tooltip: true 
        //start: new Date(now.getFullYear(), now.getMonth() - 9) 
      }); 
     } else { 
      setTimeout(arguments.callee, 100); 
     } 
    }); 
}); 

내가 말을해야하지만, 당신은 매우 해키 모습을하고있는 일 것이다. arguments.callee을 사용하고 있습니다. 현재 비동기 작업에서 "대기"하려고 시도하고 있습니다. 콜백이나 약속을 사용하여 비동기를 적절하게 처리해야합니다.

+0

자세한 설명을 해주셔서 감사합니다. – syui

1

나는 귀하의 .replace()이 맞지 않다고 생각합니다. 당신은 setTimeoutjQuery#each에 전화를 전달하는 W3Schools

string.replace(searchvalue,newvalue) 
+0

아마도 문제 일 수 있지만 두 번째 인수가 없으면 구문 오류가 발생하지 않습니다. – JLRishe

+0

@JLRishe 예 ... 그렇지만 그 코드에 다른 문제는 찾을 수 없습니다. – jaysingkar

+0

죄송합니다. 수정했습니다. – syui

관련 문제