Получить URL-адрес из Imgur API с помощью JavaScript

Я пытаюсь использовать JavaScript для загрузки изображения в imgur с помощью этот пример:

<!DOCTYPE html><meta charset="utf8"><title>Yo.</title>
<div>DROP!<button onclick="document.querySelector('input').click()">Or click</button></div>
<input style="visibility: collapse; width: 0px;" type="file" onchange="upload(this.files[0])">
<script>
/* Drag'n drop stuff */
window.ondragover = function(e) {e.preventDefault()}
window.ondrop = function(e) {e.preventDefault(); upload(e.dataTransfer.files[0]); }
function upload(file) {

    /* Is the file an image? */
    if (!file || !file.type.match(/image.*/)) return;

    /* It is! */
    document.body.className = "uploading";

    /* Lets build a FormData object*/
    var fd = new FormData(); // I wrote about it: https://hacks.mozilla.org/2011/01/how-to-develop-a-html5-image-uploader/
    fd.append("image", file); // Append the file
    fd.append("key", "6528448c258cff474ca9701c5bab6927"); // Get your own key http://api.imgur.com/
    var xhr = new XMLHttpRequest(); // Create the XHR (Cross-Domain XHR FTW!!!) Thank you sooooo much imgur.com
    xhr.open("POST", "http://api.imgur.com/2/upload.json"); // Boooom!
    xhr.onload = function() {
        // Big win!
        document.querySelector("#link").href = JSON.parse(xhr.responseText).upload.links.imgur_page;
        document.body.className = "uploaded";
    }
    // Ok, I don't handle the errors. An exercice for the reader.

    /* And now, we send the formdata */
    xhr.send(fd);
}
</script>

<!-- Bla bla bla stuff ... -->

<style>
body {text-align: center; padding-top: 100px;}
div { border: 10px solid black; text-align: center; line-height: 100px; width: 200px; margin: auto; font-size: 40px; display: inline-block;}
#link, p , div {display: none}
div {display: inline-block;}
.uploading div {display: none}
.uploaded div {display: none}
.uploading p {display: inline}
.uploaded #link {display: inline}
em {position: absolute; bottom: 0; right: 0}
</style>

<p>Uploading...</p>
<a id="link">It's online!!!</a>

В этом примере URL-адрес изображения помещается в ссылку и нравится текст «Это онлайн !!!».

Не могли бы вы помочь мне, как получить URL-адрес изображения после загрузки? Я хочу отображать URL-адрес изображения (например, заменить «Он онлайн !!!» на URL-адрес), а не помещать его в ссылку.


person Tuan    schedule 06.03.2012    source источник


Ответы (1)


Вместо установки значения href для параметра #link установите его значение innerHTML. Или значение innerHTML какого-то другого элемента.

document.getElementById('link').innerHTML = 'The url';

Изменить: см. http://jsfiddle.net/XVvyJ/1/.

person Raintree    schedule 06.03.2012
comment
URL-адрес находится в JSON.parse(xhr.responseText).upload.links.imgur_page, но как его отобразить? Я плохо разбираюсь в Javascript. - person Tuan; 06.03.2012
comment
Я заменил document.querySelector(#link).href на document.getElementById('link').innerHTML, но это не работает. - person Tuan; 06.03.2012
comment
Какой элемент #link? Не могли бы вы показать мне код HTML? (Вы можете отредактировать свой пост) - person Raintree; 06.03.2012
comment
Я отредактировал код (источник: github.com/paulrouget/miniuploader/blob /gh-pages/index.html). Пожалуйста, дайте мне совет. Спасибо - person Tuan; 07.03.2012
comment
Взгляните сюда: jsfiddle.net/XVvyJ/1 Просто перетащите туда какое-нибудь изображение, чтобы тест. Я в основном добавил строку, которую я предложил, в ваш код. Пожалуйста, отметьте свой пост как отвеченный, если он вам помог! ;) - person Raintree; 07.03.2012
comment
@Raintree, когда я добавляю свой собственный идентификатор клиента вместо вашего 6528448c258cff474ca9701c5bab6927, я получаю сообщение об ошибке: POST api .imgur.com/2/upload.json 400 (неверный запрос) загрузить window.ondrop Uncaught TypeError: невозможно прочитать «ссылки» свойства неопределенного xhr.onload - person achudars; 07.08.2013