0

我正在使用 Goo.gl URL 缩短器来缩短链接。我 sed 它一个 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

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

4

2 回答 2

1

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

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

于 2012-11-06T01:39:05.067 回答
0

请参阅JSON:为什么要转义正斜杠?

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

{
    "kind": "urlshortener#url",
    "id": "http:\/\/goo.gl\/mR2d",
    "longUrl": "http:\/\/google.com\/"
}
于 2012-11-05T22:23:02.240 回答