0

jQuery/ajax を介してこれを実行しようとしましたが、うまくいかなかったので、通常の XMLHttpRequest にフォールバックすると考えました。残念ながら、まだ機能していません (同じ問題)。

Google の POST リクエストのドキュメントは次のとおりです。そして、ここに私のコードがあります:

var xmlHttp = new XMLHttpRequest();

xmlHttp.open("POST", "https://www.googleapis.com/urlshortener/v1/url", true);
xmlHttp.setRequestHeader("Content-Type", "application/json");

var url = "longUrl=" + encodeURIComponent("http://www.google.com/");
console.log(url);

xmlHttp.send(url);

「url」は次のようにコンソールに送信されます: longUrl=http%3A%2F%2Fwww.google.com%2F

応答は次のとおりです。

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "parseError",
    "message": "Parse Error"
   }
  ],
  "code": 400,
  "message": "Parse Error"
 }
}

誰かが私が間違っていることを見ていますか?

前もって感謝します!

編集:@Greg用に追加-jQueryを使用しているときにGoogleの仕様に従っていることがわかるように-同じ正確なエラーが発生します

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    data: { "longUrl": "http://www.google.com/" },
    url: "https://www.googleapis.com/urlshortener/v1/url",
    success: function(data) {
        //do something with the shortened url json data
        //console.log(data);
    }
});
4

2 に答える 2

2

これが解決策です(@Gregからのコメントは私を正しい方向に向けました)。

var xmlHttp = new XMLHttpRequest();

xmlHttp.open("POST", "https://www.googleapis.com/urlshortener/v1/url", true);
xmlHttp.setRequestHeader("Content-Type", "application/json; charset=utf-8");

var req = new Object();
req.longUrl = "http://www.google.com/";

var jsonStr = JSON.stringify(req);

xmlHttp.send(jsonStr);
于 2012-10-02T23:58:29.393 に答える
1

Google が提供する仕様に従っていません。次のように JSON オブジェクトを送信する必要があります。

{"longUrl": "http://www.google.com/"}
于 2012-10-02T23:24:36.287 に答える