我正在使用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
我原以为字符串中的引号可能存在问题。什么是解决问题的好方法?
答案 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\/"
}