0

リンクを短縮するためにGoo.glURL短縮サービスを使用しています。私はそれを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 に答える