如何让JSON成功解析XMLHttpRequest字符串?

时间:2012-11-05 21:39:44

标签: javascript json xml-parsing xmlhttprequest

我正在使用Goo.gl网址缩短器来缩短链接。我给它一个Json字符串,它返回这样的结果,它存储在xmlHttp.response中:

"{
 "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

我原以为字符串中的引号可能存在​​问题。什么是解决问题的好方法?

2 个答案:

答案 0 :(得分:1)

我想我意识到出了什么问题。代码尝试在XMLHttpRequest实际拥有任何内容之前从XMLHttpRequest获取信息。需要等到xmlHttp.onreadystatechange和xmlHttp.readyState == 4然后输出缩短的URL。然后可以在需要的地方发送。

(不习惯这些异步问题...)

答案 1 :(得分:0)

请参阅JSON: why are forward slashes escaped?

我的猜测是,您正在使用的JSON解析器可能需要转义正斜杠。看看是否接受了这个输入:

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