2012-08-31 2 views
2

는 내가 AJAX 호출에서 다시 JSON 객체를 받고이 같은 결과를 로깅하고있어 정의되지 않는다 :JSON 개체 속성은

console.log(response); 

을 그리고 이것은 콘솔에 로그인 한 반응이다 :

{"filename":"new.jpg","orientation":"vertical"} 

그러나, 내가

console.log(response.orientation); 

나는 그것이 정의되지 않은 응답을 얻을 때.

내가 읽은 대부분의 답변은 객체 대신 배열이 반환되고 응답 [0]. 방향이 작동해야한다는 것을 나타내지 만 여기에는 해당하지 않습니다. 같은 배열을 콘솔의 다른 변수에 할당 할 때 :

var obj = {"filename":"new.jpg","orientation":"vertical"} 

그런 다음 obj.orientation이 올바른 값을 반환합니다.

$response=array('filename' => $newfilename, 'orientation' => $orientation); 
$response=json_encode($response); 
echo $response; 

그것은 명백한 이유 속성이 정의되지 않은 보이고있다인가 :

나는 PHP에서 JSON 개체를 만드는거야?

+0

을 사용하십시오. 특성에 액세스하려면 먼저 JSON.parse를 통해 전달해야합니다. 또한 [JSON 객체와 같은 것은 없습니다.] (http://benalman.com/news/2010/03/theres-no-suchthing-as-a-json/) – jbabey

+0

당신의 보내는 아약스 요청 및 성공 함수 – Ashirvad

답변

6

중 하나를 넣어 속성을 읽을 수있는 JSON 개체를 제공합니다.

+0

JSON.parse (또는 jQuery의 $ .parseJSON)가 트릭을 수행했습니다. 내가 읽은 여러 튜토리얼에 왜 그것이 없었는지 모르겠다 ... 고마워! –

+0

일반적인 문제로 보입니다. 누군가가 본질적으로 같은 질문을하는 것을 보지 못하는 날은 거의 없습니다. – Barmar

2

문자열을 구문 분석하여 적절한 JSON 객체를 가져와야합니다. JSON.parse (응답); 는 PHP에

header("Content-type: application/jason"); 

를 자바 스크립트에서 AJAX 호출에서 dataType: "json"를 지정하거나 JSON.parse 전화 : 는

1

jsfiddle에서 다음 예제를 시도해 볼 수 있습니까?

JSON.parse()를 사용할 수있는 더 좋은 방법은 아닙니다. 또는 $ .parseJSON(); (JQuery와 버전)

그러나이 방법으로 문제가있는 경우, JSON이 그것을 수정하고 당신은 내가 아약스/PHP 부분이 같이해야한다고 생각

http://jsfiddle.net/dadviegas/gf8Yq/

+0

$.parseJSON은 완벽하게 작동했습니다. 고맙습니다! –

0

코드를 변경할 수있는 문자열로 반환 아약스

$.ajax({ 
     type: "POST", 
     url: "link.php", 
     dataType: "json", 
     success: function(result){ 
      alert(result.orientation); 
     } 
    }); 

PHP

$response=array("filename" => "$newfilename", "orientation" => "$orientation"); 
$response=json_encode($response); 
echo $response; 

응답이 문자열 인 경우 최소한 5.2 PHP 버전