2013-05-07 1 views
-4

PHP 변수를 자바 스크립트에 전달하기 전에 왜 PHP 변수를 에코해야합니까? 예를 들어 PHP 배열을 자바 스크립트로 전달 : 왜 PHP 변수를 에코해야합니까?

,
drawChart(600/50, <?php echo $day; ?>, ...) 

이유는 부품을 필요? 왜 안되는거야

drawChart(600/50, $day, ...) 

?

감사합니다.

+1

PHP 변수 또는 JavaScript 변수로 '$ day'를 사용한다는 것을 스크립트에서 어떻게 알 수 있습니까? – JJJ

+0

그래서 echo는 변수 대신 JS 값을 전달합니다. –

답변

2

강한 개념적 문제를 설명하려면 질문하는 것이 필요합니다. 자바 스크립트 코드는 서버가 페이지의 HTML을 반환하고 클라이언트 측에게 코드라고 후에 웹 브라우저 에서 실행되는 동안 PHP 코드는 웹 서버에서 처리되며, 서버 측 코드라고합니다 . 따라서 서로 다른 플랫폼에서 실행 단계가 다릅니다. 자바 스크립트 코드는 PHP 소스 코드를 평가할 수 없으며 PHP 변수 및 상태에 대한 지식이 없습니다.

질문의 코드는 자바 스크립트 함수 호출을 나타내며 매개 변수 중 하나는 PHP 변수입니다. PHP 변수는 브라우저에서 받기 전에 서버에서 평가되어야하므로 javascript 호출이 올바르게 작동합니다. $day 변수는 다음 코드 (술 '를 예를 들어) 값 13이있는 경우 :

drawChart(600/50,<?php echo $day; ?>, ...)

이 같은 HTML로 렌더링됩니다

drawChart(600/50,13

그러나 PHP 항목을 건너 뛰면 다음과 같이 표시됩니다.

drawChart(600/50,$day, ...)

는 아마도 브라우저에서 작동하지 않습니다.

또한 $day이라는 javascript 변수가있을 수 있으므로 PHP가 평가 한 대신 코드에서이를 사용하므로 오류없이 작동 할 수 있지만 예기치 않은 동작이 발생할 수 있습니다.

2

업데이트 : 이전 질문에 대한 응답으로이 부분에 대한 더 자세한 설명이 나와 있습니다.

What is the difference between client-side and server-side programming?


이것은 초기에 웹 개발자를 많이 혼란.

귀하의 PHP 코드는 서버 측입니다. 변수 $day은 웹 요청이 서버에 도달 할 때 평가됩니다.

귀하의 JavaScript 코드는 클라이언트 측입니다. 서버의 관점에서 보았을 때 정적 텍스트는 사용자의 브라우저로 전송됩니다. 그런 다음 브라우저는이 정적 텍스트를 코드로 해석하여 실행합니다.

JavaScript가 실행될 때 PHP가 실행되는 환경에 더 이상 존재하지 않으므로 PHP와 JavaScript간에 변수를 "공유"할 수 없습니다.

$day의 값을 PHP 컨텍스트의 변수로 출력하려면 echo을 사용합니다. 그 값은 자바 스크립트에 주입되어 더 이상 클라이언트 컨텍스트의 변수가 아닙니다. 예를 들어 drawChart을 하드 코딩 된 값으로 호출 한 것과 같습니다.

관련 문제