2014-01-15 2 views
0

PHP 배열에서 JS 객체를 반향시키기 위해 JSON 문자열을 생성하고 있습니다. 이것은 내가 JS에 들어갈 원하는 것입니다
:JS 변수 안에 JS 변수가 있습니다.

<?php 
$array = array('a'=>1, 'b'=>array(1,2), 'c'=>???, 'd'=>???); 
echo json_encode($array); 
?> 

질문은 다음과 같습니다 :

var myVar = 123;  
//php output: 
var obj = {a:1, b:[1,2], c: myVar, d:Date.UTC(2014, 0, 07)} 

이것은 내가 무엇을 가지고는 '원 있도록 내가 대신 물음표의 PHP에 넣어 무엇 문자열로 변환 되나요?

+0

_so가 문자열 _으로 변환되지 않습니다. 어떤 유형의 변수입니까? 'json_encode'를하면 항상 파싱됩니다. – putvande

+1

FYI : JSON이 아닙니다. JSON에는 변수가 없으므로 메소드를 호출하지 않습니다. – epascarello

+1

JSON과 애플리케이션의 연결을 해제해야합니다. 변수 포인터를 내부에 두어서는 안됩니다 ... 변수 저장소가 아니라 데이터 저장소입니다. – BenM

답변

0

:

<?php 
    $array = array('a'=>1, 'b'=>array(1,2), 
    'c'=>'@#myVar#@', 
    'd'=>'@#Date.UTC(2014, 0, 07)#@' 
); 
    $json = json_encode($array); 
    echo preg_replace('/\"\@\#(.*?)\#\@\"/', '${1}', $json); 
?> 

그러나 JS JSON.parse

이 작동하지 않습니다, 그래서 :

eval("var x = " + json_from_php); 

을하지 않음 그런 좋은 생각이지만, 필요하다면 효과가있을 것입니다. 서버가 생성하지 않는 "json"과 함께 사용하지 마십시오.

1

JSON은 변수 또는 특수 Date 객체를 지원하지 않습니다. 스칼라 값 (문자열, 숫자, 부울), 배열 및 객체 (연관 배열) 만 사용할 수 있습니다.

원하는 것을 얻는 방법은 .js 파일을 반환하고 간단한 JSON 데이터를 전송하는 대신 브라우저에서이를 (스크립트로 포함하여) 실행하도록하는 것입니다. 그렇지 않으면 수신 측에서 처리하는 "특수"문자열 만 정의 할 수 있습니다. (예를 들어, 배열 ["var", "myVar"] 이에 따라 구문 분석 할 수 있습니다.) 당신은 실제로 그런 일 할 수

+0

JSON과 함께 사용할 수있는 날짜 형식이 일반적으로 있지만 형식은 여전히 ​​문자열입니다. – crush