2013-03-26 7 views
0

JSON 개체가 mongoDB 컬렉션에 저장되어 있습니다. 객체는 5 x 이미지, 5 y 이미지 및 tictactoe 보드 이미지의 위치를 ​​나타냅니다.JSON.parse 예기치 않은 문자

간격을두고이 개체로 응답하는 PHP 파일에 요청을 보낸 다음 해당 개체를 구문 분석하고 이에 따라 조각을 이동하려고합니다.

이 내 요청입니다 :

$.getJSON 
(
    "e4.php", 
    "", 
    function(data) 
    { 
     world = JSON.parse(data); 
     moveObjects(world); 
    } 
); 

하지만 난 얻을 : JSON.parse : 내가 제대로 돌아 오는 것 알 수 있도록 불을 지르고 나에게 올바른 개체를 제공 데이터를 CONSOLE.LOG 예상치 못한 문자

. e4.php에서

:

$encodedworld = $_REQUEST['data']; 

$criteria = array("name" => "world"); 

$doc = $collection->findOne($criteria); 

$doc['world'] = $encodedworld; 

$collection->save($doc); 

$conn->close(); 

print $encodedworld; 
:. 데이터베이스는 e3.php에 업데이트됩니다
$criteria = array("name" => "world"); 

$doc = $collection->findOne($criteria); 

$conn->close(); 

print $doc['world']; 
CONN 연결을, 그리고 컬렉션 내가에서 일하고 있어요 모음입니다

아이디어가 있으십니까? 나는 곤란하다

미리 감사드립니다.

+0

JSON을 표시하지 않을 경우 알기가 어렵습니다. 어떻게 그걸 만들었 니? –

+0

편집 할 순간, – Cruncher

+0

편집 됨. 문제는 실제로 내가 게시 한 원래 코드에있는 것처럼 보입니다. – Cruncher

답변

6

jQuery의 getJSON은 JSON을 비 직렬화하므로 data은 문자열이 아닌 객체 그래프입니다. 문서에서 :

success 콜백은 JSON 구조에 의해 정의되고 $.parseJSON() 방법을 이용하여 분석 전형적 자바 스크립트 객체 또는 배열 반환 된 데이터를 전달한다.

그래서 data 때문에 이미이 직렬화 복원 된 , 당신이 원하는 또는에 JSON.parse를 호출 할 필요는 없습니다 있습니다. 그렇게하면 에 toString이 암시 적으로 호출되어 또는 [object Array] 중 하나를 반환하므로 JSON.parse이 입력으로 표시되지 않습니다. :-) 그냥 data 직접 사용

$.getJSON 
(
    "e4.php", 
    "", 
    function(world)   // <=== Changed name of argument 
    { 
     moveObjects(world); // <=== Used it directly 
    } 
); 

을 별도로 : 당신이 어딘가에 당신이 당신의 코드는 The Horror of Implicit Globals에 떨어지는 먹이했다 보이지 않았다 world를 선언하지 않는 한. 거기에 var을 갖고 싶었을 것입니다. 하지만 위의 변경 사항을 사용하면 변수가 전혀 필요하지 않으므로 ...

+0

정말 고마워요. 확실하지 그게 내가 놓친 어떻게 – Cruncher

+0

또한, 전 세계 var로 선언했다. moveObjects가 세계가 무엇인지를 더 분명하게 알기 위해 세계를 인수로 포함 시켰습니다. 그것은 단지 게시물이었습니다. – Cruncher

관련 문제