2012-11-05 10 views
0

링크를 단축하기 위해 Goo.gl URL 단축기를 사용하고 있습니다. 나는 그것을 JSON 문자열을 나오지 그것은 xmlHttp.response에 저장됩니다있는 다음과 같은 결과를 반환 :JSON을 사용하여 XMLHttpRequest 문자열을 성공적으로 파싱하려면 어떻게해야합니까?

"{ 
"kind": "urlshortener#url", 
"id": "http://goo.gl/mR2d", 
"longUrl": "http://google.com/" 
}" 

코드를 보낸 후, 나는 그것이 JSON 사용하여 구문 분석하려고 :

xmlHttp.send(jsonStr); 
var short_url = JSON.parse(xmlHttp.response).id ; 

때이 코드를 내가 문자열에 따옴표 몇 가지 문제가있을 수 있습니다 생각했다

getShortURL("http://google.com"); 
SyntaxError: Unexpected end of input 
arguments: Array[0] 
get message: function() { [native code] } 
get stack: function() { [native code] } 
set message: function() { [native code] } 
set stack: function() { [native code] } 
type: "unexpected_eos" 
__proto__: Error 

: 함수의 실행, 나는 오류 다음 "입력의 예기치 않은 끝을"얻을. 문제를 해결하는 좋은 방법은 무엇입니까?

+0

당신이 무슨 뜻 (... 비동기 문제의이 종류를 사용하지 않은) eval()이 작동합니까? –

+2

JSON 주변에는 실제로 따옴표가 붙지 않았습니까? 실제 응답을 게시하십시오. 유효하지 않습니다. JSON – Bergi

+0

Google 서비스 요청시 게시물이 필요하며 JSONP를 지원하지 않으므로 일반 JavaScript로이 작업을 수행 할 수 없습니다. – epascarello

답변

1

내가 잘못 생각한 것 같습니다. 이 코드는 XMLHttpRequest에서 실제로 정보를 얻기 전에 정보를 얻으려고합니다. xmlHttp.onreadystatechange 및 xmlHttp.readyState == 4가 될 때까지 기다린 다음 단축 된 URL을 가져와야합니다. 그런 다음 필요한 곳으로 보낼 수 있습니다. var에 SHORT_URL = JSON.parse (xmlHttp.response.id) :

0

는 참조 JSON: why are forward slashes escaped?

내 생각 엔 아마 당신이 사용하고있는 JSON 파서 앞으로 기대하는 이스케이프 슬래시 것입니다. 이 입력이 대신 허용되는지 확인하십시오.

{ 
    "kind": "urlshortener#url", 
    "id": "http:\/\/goo.gl\/mR2d", 
    "longUrl": "http:\/\/google.com\/" 
} 
관련 문제