참고: 이 질문의 이전 개정판에서는 서버의 PHP와 클라이언트의 JavaScript를 명시적으로 다루었습니다. 한 언어가 클라이언트에서 실행되고 다른 언어가 서버에서 실행되는 경우(동일한 언어라도) 문제의 성격과 해결 방법은 모든언어에서 동일합니다. 특정 언어에 관한 답변을 볼 때 이것을 고려하십시오.
PHP 코드가 JavaScript 코드에서 작동하지 않는 이유를 확인하려면 클라이언트 측 언어와 서버 측 언어가 무엇이고 어떻게 작동하는지 이해해야 합니다.
서버 측 언어 (PHP 등) : 데이터베이스에서 레코드를 검색하고 상태 비저장 HTTP을 통해 연결 하고 보안이 필요한 많은 작업을 수행합니다. 서버에 상주하며 이러한 프로그램은 소스 코드를 사용자에게 노출하지 않습니다.
따라서 서버 측 언어가 HTTP 요청을 처리하고 @deceze가 말했듯이 PHP는 서버에서 실행되어 일부 HTML 및 JavaScript 코드를 출력하고 응답으로 클라이언트에 전송된다는 것을 쉽게 알 수 있습니다. , HTML을 해석하고 JavaScript를 실행합니다.
반면에 클라이언트 측 언어(예: JavaScript) 는 브라우저에 상주하고 실행됩니다. 클라이언트측 스크립트는 일반적으로 서버측이 아닌 사용자의 웹 브라우저에 의해 클라이언트측에서 실행되는 네트워크상의 컴퓨터 프로그램 클래스를 나타냅니다. p>
JavaScript는 사용자에게 표시되고 쉽게 수정될 수 있으므로 보안을 위해 JavaScript에 의존할 수 없습니다.
그래서 서버에 HTTP 요청을 하면 서버는 먼저 PHP 파일을 주의 깊게 읽어 수행해야 할 작업이 있는지 확인한 다음 클라이언트에 응답을 보냅니다. @deceze가 말했듯이 *PHP가 응답 출력을 마치면 스크립트가 종료되고 새로운 HTTP 요청이 올 때까지 서버에서는 아무 일도 일어나지 않습니다. *
이제 PHP를 호출해야 한다면 어떻게 해야 할까요? 페이지를 다시 로드하거나 AJAX 호출을 사용하여 이를 수행하는 방법에 따라 다릅니다.
페이지를 다시 로드하고 HTTP 요청
을 보내면 됩니다.
JavaScript를 사용하여 AJAX 호출을 할 수 있습니다. 페이지를 다시 로드할 필요가 없습니다
양 당사자는 HTTP 요청과 응답을 통해 통신합니다. PHP는 서버에서 실행되어 일부 HTML 및 JavaScript 코드를 출력합니다. 이 코드는 클라이언트에 대한 응답으로 전송되며, 여기서 HTML이 해석되고 JavaScript가 실행됩니다. PHP가 응답 출력을 마치면 스크립트가 종료되고 새 HTTP 요청이 올 때까지 서버에서는 아무 일도 일어나지 않습니다.
예제 코드는 다음과 같이 실행됩니다.
으아악
1단계, PHP는 태그 사이의 모든 코드를 실행합니다. 결과는 다음과 같습니다:
으아악
file_put_contents 调用没有产生任何结果,它只是将“ + foo + ”写入文件。 호출 결과 "42"가 출력되며, 이제 이 코드는 원래 있던 위치에 있습니다.
생성된 HTML/JavaScript 코드는 이제 클라이언트로 전송되어 평가됩니다. alert 调用有效,而 foo 어디에도 사용되지 않는 변수입니다.
모든 PHP 코드는 클라이언트가 JavaScript 실행을 시작하기 전에 서버에서 실행됩니다. JavaScript가 상호 작용할 수 있는 응답에는 PHP 코드가 남아 있지 않습니다.
특정 PHP 코드를 호출하려면 클라이언트가 서버에 새로운 HTTP 요청을 보내야 합니다. 이는 세 가지 가능한 방법 중 하나를 사용하여 달성할 수 있습니다:
브라우저에서 새 페이지를 로드하게 하는 링크입니다.
양식 제출, 데이터를 서버에 제출하고 새 페이지를 로드합니다.
AJAX 요청은 현재 페이지를 떠나지 않고 서버에 대한 일반 HTTP 요청(1. 및 2. 참조)을 생성하는 데 사용되는 Javascript 기술입니다.
PHP 코드가 JavaScript 코드에서 작동하지 않는 이유를 확인하려면 클라이언트 측 언어와 서버 측 언어가 무엇이고 어떻게 작동하는지 이해해야 합니다.
서버 측 언어 (PHP 등) : 데이터베이스에서 레코드를 검색하고 상태 비저장 HTTP을 통해 연결 하고 보안이 필요한 많은 작업을 수행합니다. 서버에 상주하며 이러한 프로그램은 소스 코드를 사용자에게 노출하지 않습니다.
따라서 서버 측 언어가 HTTP 요청을 처리하고 @deceze가 말했듯이 PHP는 서버에서 실행되어 일부 HTML 및 JavaScript 코드를 출력하고 응답으로 클라이언트에 전송된다는 것을 쉽게 알 수 있습니다. , HTML을 해석하고 JavaScript를 실행합니다.
반면에 클라이언트 측 언어(예: JavaScript) 는 브라우저에 상주하고 실행됩니다. 클라이언트측 스크립트는 일반적으로 서버측이 아닌 사용자의 웹 브라우저에 의해 클라이언트측에서 실행되는 네트워크상의 컴퓨터 프로그램 클래스를 나타냅니다. p>
JavaScript는 사용자에게 표시되고 쉽게 수정될 수 있으므로 보안을 위해 JavaScript에 의존할 수 없습니다.
그래서 서버에 HTTP 요청을 하면 서버는 먼저 PHP 파일을 주의 깊게 읽어 수행해야 할 작업이 있는지 확인한 다음 클라이언트에 응답을 보냅니다. @deceze가 말했듯이 *PHP가 응답 출력을 마치면 스크립트가 종료되고 새로운 HTTP 요청이 올 때까지 서버에서는 아무 일도 일어나지 않습니다. *
이제 PHP를 호출해야 한다면 어떻게 해야 할까요? 페이지를 다시 로드하거나 AJAX 호출을 사용하여 이를 수행하는 방법에 따라 다릅니다.
잘 읽었습니다:
귀하의 코드는 완전히 독립적인 두 부분, 즉 서버 측과 클라이언트 측으로 나뉩니다.
으아악양 당사자는 HTTP 요청과 응답을 통해 통신합니다. PHP는 서버에서 실행되어 일부 HTML 및 JavaScript 코드를 출력합니다. 이 코드는 클라이언트에 대한 응답으로 전송되며, 여기서 HTML이 해석되고 JavaScript가 실행됩니다. PHP가 응답 출력을 마치면 스크립트가 종료되고 새 HTTP 요청이 올 때까지 서버에서는 아무 일도 일어나지 않습니다.
예제 코드는 다음과 같이 실행됩니다.
으아악1단계, PHP는
으아악태그 사이의 모든 코드를 실행합니다. 결과는 다음과 같습니다:
file_put_contents
调用没有产生任何结果,它只是将“ + foo + ”写入文件。호출 결과 "42"가 출력되며, 이제 이 코드는 원래 있던 위치에 있습니다.
생성된 HTML/JavaScript 코드는 이제 클라이언트로 전송되어 평가됩니다.
alert
调用有效,而foo
어디에도 사용되지 않는 변수입니다.모든 PHP 코드는 클라이언트가 JavaScript 실행을 시작하기 전에 서버에서 실행됩니다. JavaScript가 상호 작용할 수 있는 응답에는 PHP 코드가 남아 있지 않습니다.
특정 PHP 코드를 호출하려면 클라이언트가 서버에 새로운 HTTP 요청을 보내야 합니다. 이는 세 가지 가능한 방법 중 하나를 사용하여 달성할 수 있습니다:
여기에 이러한 방법을 더 자세히 설명하는 질문이 있습니다
JavaScript를 사용하여 브라우저에
window.location
을 사용하여 새 페이지를 열거나 양식을 제출하도록 지시하여 가능성 1과 2를 시뮬레이션할 수도 있습니다.