繁体   English   中英

XMLHttpRequest HTTP标头

[英]XMLHttpRequest HTTP Headers

我正在尝试编写一些脚本来在imgur上重新托管网络上的图片。

这称为“图像侧面加载”,您只需将浏览器指向http://api.imgur.com/2/upload?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

我需要以某种方式访问​​第4个响应标头,因为即使此方法未返回任何可解析的XML或JSON响应,该链接也是我所需的已上传img的URL。

那么有没有办法访问该信息? 为什么取消?

感谢大家!

好的,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/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM