2011-08-02 4 views
3

PHP를 사용하여 파일을 업로드하고 있으며 파일 이름과 파일 상태를 javascript로 반환하고 싶습니다. PHP에서는 json 객체를 다음과 같이 작성합니다.Javascript에서 JSON 객체 "undefined"오류가 발생했습니다.

$value = array('result' => $result, 'fileName' => $_FILES['myfile']['name']); 
print_r ($value); 
$uploadData = json_encode($value); 

이렇게하면 json 객체가 만들어집니다. 그런 다음 자바 스크립트의 함수로 보내고 fileStatus라는 변수로 전달합니다.

alert (fileStatus); 

이 잘되어야합니다

{"result":"success","fileName":"cake"} 

표시합니다. 하지만 시도 할 때

fileStatus.result or fileStatus.fileName 

나는 정의되지 않았다는 메시지가 나타납니다. 제발이 일에 전적으로 열중하고 있습니다. 감사.

+4

는'fileStatus' 아마'{ "결과"가 포함 된 JSON 문자열입니다 : "성공", "파일 이름": "케이크"}'. – Gumbo

+2

'fileStatus'를 설정 한 곳에서 코드를 보여줄 수 있습니까? –

+0

범위 지정 문제가있는 것 같습니까? 실제 코드를 표시 할 수 있습니까? – Prusse

답변

3

fileStatus은이 시점의 문자열이므로 resultfileName과 같은 속성은 없습니다. Firefox의 기본 JSON.parse 또는 jQuery의 jQuery.parseJSON과 같은 메소드를 사용하여 문자열을 JSON 객체로 구문 분석해야합니다.

예 : 변수를 설정하는 경우

var fileStatusObj = jQuery.parseJSON(fileStatus); 
+0

정말 고마워요. 그것은 매력처럼 작용했습니다. – Falcata

2

경고에 {"result":"success","fileName":"cake"}이 표시되면 문자열을 JSON 객체로 변환해야합니다. 개발중인 브라우저에 따라 native JSON 지원 또는 JSON.org 구현을 사용하여 문자열을 객체로 변환 할 수 있습니다. 거기에서 예상대로 작동해야합니다.

+0

또는 악의적 인'eval' 함수를 사용할 수 있습니다. –

+0

할 수는 있지만 할 수는 없습니다. :) – Dan

1

, 주위에 따옴표를 넣지 마십시오.

var fileStatus = <?php echo $uploadData; ?>; 

나 :

var fileStatus = <?=$uploadData?>; 

하지 이렇게 수행 : 그냥이 같은 변수를 설정

var fileStatus = '<?php echo $uploadData; ?>';