1

imgur で Web 上の写真を再ホストするための小さなスクリプトを作成しようとしています。

これは画像サイドローディングと呼ばれ、ブラウザでhttp://api.imgur.com/2/upload?url= + 画像の URLを指定するだけで済みます。

XML または JSON 応答が返されないため、解析して img URL を取得できません。

しかし、これを行う方法を見つけたと思いますが、正しく機能させることはできません。これが私が使用しているコードです。

$(document).ready(function() {
    $("#button").click(function() {
        str = $("input").val().toString();
        link = "http://api.imgur.com/2/upload?url=" + str;
        var xhr = new XMLHttpRequest();
        xhr.open("GET", link);
        xhr.send();
        var headers = xhr.getAllResponseHeaders().toLowerCase;
        alert(headers);

    });

});

Google Chrome のコンソールを見ると、これらはスクリプトの実行後に生成された結果です。

私はまだ画像を投稿することを許可されていないので、ここに結果へのリンクがあります: http://i.imgur.com/xCyIP.png

このメソッドは解析可能な XML または JSON 応答を返さないにもかかわらず、そのリンクはアップロードされた img の URL であり、これで十分です。

その情報にアクセスする方法はありますか?なぜキャンセルされるのですか?

みんな、ありがとう!

4

1 に答える 1

0

API は何かを返さなければなりません。

実際、http: //api.imgur.com/examples では、次のようなことを行うようアドバイスしています。

var xhr = new XMLHttpRequest();
xhr.open("GET", link);
xhr.onload = function() {
    var url = JSON.parse(xhr.responseText).upload.links.imgur_page;
    alert(url);
}
xhr.send();

編集。はい、分かりました。通常、上記のコードは機能するはずですが、imgur が問題に直面していると思います。バグを報告します。

バグはまだありますが、ニーズを満たすための汚い解決策を次に示します。

var xhr = new XMLHttpRequest();
xhr.open("GET", link);
xhr.onload = function() {
    html = xhr.responseText;
    alert(html.substr(html.indexOf('http://i.imgur.com/') + 19, 5));
}
xhr.send();

答えを待っていなかったので、コードが機能していませんでした。コールバック関数を介してキャッチする必要があります。

編集。上記のコードはローカルでのみ機能します。jQueryを使用しているので、ショートカットを紹介しましょう$.post

$(document).ready(function() {
    $("#button").click(function() {
        $.post('http://api.imgur.com/2/upload.json', {
            key: 'ec575de603b936e54c2b4a9f232d537e',
            image: $("input").val().toString()
        }, function(data) {
            alert(data.upload.image.hash);
        });
    });
});​

http://jsfiddle.net/Le_Sphinx/rEfdS/

于 2012-08-09T23:07:03.093 に答える