2010-12-04 4 views
0

나는 개체의 값을 가져 오는 getValue 함수가있는 PHP 배열을 가지고있다. 내가 싶어한다면, 그것은 PHP 그냥 가치입니다 : 내가 얻을JSON을 통해 JS에서 PHP 메소드 사용하기?

document.write(mapArray); 

을 할 경우

var mapArray = <?php echo json_encode($mapArray); ?> 

: 내가 사용 JS에 배열을 전달

echo mapArray[2][2]->getValue; 

"객체 객체"문자열의 전체 배열. 내가 시도하면 :

document.write(mapArray.[2][2].getValue); 

나는 "정의되지 않음"을 얻습니다.

왜 이런 일이 발생합니까? 메소드가 JS 또는 JSON 인코딩에서 인식되도록 PHP 데이터 객체를 모방해야합니까?

+0

두 번째 코드 블록의 렌더링 결과는 무엇입니까? 그것에 PHP 비트가있는 것? –

+0

첫 번째 코드 블록에서'mapArray [2] [2] -> getValue()'를 사용한다고 가정합니다. 'getValue'가 메소드가 아닌 단순한 속성 인 경우 나머지 질문은 의미가 없습니다. – VoteyDisciple

답변

4

모두 json_encode은 데이터를 나타내는 문자열을 반환합니다.

모든 PHP 기능의 JavaScript 버전을 만들 수 있다고 가정 해보십시오. json_encode은 필수적으로 가능한 모든 PHP 기능을 이해하고 동등한 JavaScript 기능으로 변환 할 수있는 컴파일러 여야합니다.

단순한 기능을 위해 작동하는 것은 상상할 수 있지만 더 정교한 코드에서는 어떻게 작동할까요? getValue 함수가 MySQL 연결을 만들고, 데이터를 검색하고, JavaScript에없는 내장 PHP 함수를 사용하여 계산을 수행하기 위해 일부 라이브러리 PHP 코드를 호출하면 열악한 json_encode 함수는 전체 PHP 언어를 본질적으로 변환해야합니다 자바 스크립트로.

아니요, 모두 JSON에서 가져올 수있는 데이터입니다. 기능이 아닙니다.

접근 방법과 관련된 개인 데이터가있는 특정 사례의 경우 json_encode을 호출하기 전에 브라우저에 반환 할 실제 데이터를 설명하는 배열 (또는 객체)을 만듭니다.

+0

설명해 주셔서 감사합니다. –

0

배열을 JSON으로 serialize하고 JavaScript로 평가를 위해 클라이언트에 전달하면 배열의 표현과 그 내용 (즉, 속성 값) 만 전달할 수 있습니다.

관련 문제