2013-06-01 2 views
0

JS 문서에 PHP 변수를 전달하고 String의 일부로 표시하려고합니다. 내 코드 같이 보인다 :PHP 변수를 js에 전달합니다

의 PHP 문서 :

<?php 

    $id = "57.pdf"; 
?> 

<script type="text/javascript"> 
var id = <?php echo json_encode($id); ?>; 
</script> 
<script type="text/javascript" src="../pdfjs/web/viewer.js"></script> 

JS 문서는 :

var DEFAULT_URL = '../../html/docs/' + id; 

그러나 전달 된 id 변수는 DEFAULT_URL에서 문자열의 일부로 표시되지 않습니다 변하기 쉬운. 어쨌든, 전달 된 변수를 경고하려고하면 정상적으로 나타납니다.

+0

js 파일에서 document.ready를 사용합니까? – bksi

+2

왜 * json_encode * 님의 ID입니까? – user544262772

+3

@Oddant와 응답 한 사람 : 값에 적절한 Javascript 구문이 사용됩니다. – deceze

답변

1

함께 시도해보십시오

var DEFAULT_URL = '../../html/docs/' + window.id; 

편집 : 다음이 작동합니다 (당신이 당신에게 매우 구체적인 이름으로 내를 교체해야합니다).

<?php 
    $id = "57.pdf"; 
?> 

<script type="text/javascript"> 
var My = { 
    app: { 
     id: <?php echo json_encode($id); ?> 
    } 
}; 
</script> 
<script type="text/javascript" src="../pdfjs/web/viewer.js"></script> 

그리고 :

var DEFAULT_URL = '../../html/docs/' + My.app.id; 
+0

내가 얻은 결과는 다음과 같습니다./html/docs/undefined –

+0

@JakubSedlacek : http://jsfiddle.net/ - 어둠 속에서 추측을 중지 할 수 있도록 전체 코드를 게시하십시오. –

+0

@JakubSedlacek Sébastien의 설명 (다른 답변과 의견에서)이 옳습니다. 내가 편집 할 때 네임 스페이스를 지정하는 것이 좋습니다. – rixo

1

이 질문의 대답은 하지json_encode입니다. 실제로 json_encode은 변수가 JS에 안전하게 전달 될 수 있도록 보장하므로 유익합니다.

정확한 OP 코드 인 this PHPfiddle을 고려하십시오. alert은 정상적으로 처리됩니다. 나는이 경우에 베팅하고 무엇

이 유사한 구조입니다 : id는 IETF의 지역 재 선언 된

var id = "57.pdf"; 
(function() { 
    ... 
    var id; 
    alert(id); 
})(); 

있는, 그리고 외부 id는 결과로 더 이상 액세스 할 수 없습니다 . 여기에서 alert은 비어 있습니다. 그러나 OP의 모든 코드를 보지 않고서는 알 수 없습니다.

+0

예, 경고가 제대로 작동합니다. 문제는 변수 ID를 DEFAULT_VAR 변수에 추가하는 것입니다. –

+0

@ Sébastien 우리는 같은 가정을하고 있습니다. 네 말이 맞다면 내 대답이 효과가있다. – rixo

+0

@rixo : ​​꼭 그런 것은 아닙니다. 또 다른 가능성은 그가 (또는 그의 또 다른 스크립트가) 자신과 같은 방식으로 전역 네임 스페이스를 오염시키고,'var' 키워드를 생략함으로써'window.id'를 재정의/해제하는 것입니다. 텔레파시로 추측하기는 어렵습니다. –

관련 문제