Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery-未调用AJAX状态码方法_Jquery_Ajax - Fatal编程技术网

jQuery-未调用AJAX状态码方法

jQuery-未调用AJAX状态码方法,jquery,ajax,Jquery,Ajax,我已经阅读了几十篇关于如何正确处理jQueryAjax调用中的HTTP状态代码的文章,但我完全失败了。也许有个虫子?请原谅我,如果这是回答其他地方,但我根本无法得到这项工作 我正在尝试使用Musicbrainz发行版UUID从封面艺术档案中加载专辑艺术作品。如果没有art,他们的服务器将返回404;如果直接返回JSON,服务器将返回200;如果重定向到JSON(带有最终图像信息),服务器将返回307 我使用PHP/CURL在服务器端实现了这一点,但它会导致页面加载的长时间延迟(因为服务器会阻止等

我已经阅读了几十篇关于如何正确处理jQueryAjax调用中的HTTP状态代码的文章,但我完全失败了。也许有个虫子?请原谅我,如果这是回答其他地方,但我根本无法得到这项工作

我正在尝试使用Musicbrainz发行版UUID从封面艺术档案中加载专辑艺术作品。如果没有art,他们的服务器将返回404;如果直接返回JSON,服务器将返回200;如果重定向到JSON(带有最终图像信息),服务器将返回307

我使用PHP/CURL在服务器端实现了这一点,但它会导致页面加载的长时间延迟(因为服务器会阻止等待covertarchive.org的响应)。我希望客户端异步加载相册插图

这里是我所拥有的——注意,只调用了错误回调;未调用任何statusCode函数。我试过很多不同的版本。没用。我已经读到有307重定向被浏览器拦截的问题,但甚至404回调都没有被命中

 $('.album_art').each(function() {
    var me = $(this);
    var uuid = me.data("uuid");
    var artistName = me.data("artist");
    var trackName = me.data("track");

    console.debug("Loading cover art for track "+uuid+ " artist name and track name: " + artistName, trackName);

    $.ajax({
        type: 'GET',
        cache: 'FALSE',
        //contentType: "application/json",
        url: "http://coverartarchive.org/release/"+uuid,
        //data: jsonString,
        statusCode: {
            200: function () { 
                console.debug("200 for " + uuid);
            },
            307: function () {
                console.debug("307 for " + uuid);
            },
            404: function () {
                console.debug("404 for " + uuid);
            }
        }
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            console.debug("error for " + uuid);
        }
    });
  }); // sorry, indentation is a bit out after copy/paste
Firebug控制台输出的某些示例相册/版本的代码片段:

Loading cover art for track 695ca8ba-16f3-4231-bf03-6ba81d435b72 artist name and track name: Nirvana Smells Like Teen Spirit
GET http://coverartarchive.org/release/695ca8ba-16f3-4231-bf03-6ba81d435b72 
307 TEMPORARY REDIRECT  239ms 

Loading cover art for track 49364063-bcb6-4d9f-b2bc-940f76495db9 artist name and track name: INXS Kiss the Dirt (Falling Down the Mountain)
GET http://coverartarchive.org/release/49364063-bcb6-4d9f-b2bc-940f76495db9
404 NOT FOUND  249ms 

Loading cover art for track b09e7fcf-0383-4e7c-acb0-d5ab437d6713 artist name and track name: Midnight Oil Blot
GET http://coverartarchive.org/release/b09e7fcf-0383-4e7c-acb0-d5ab437d6713
404 NOT FOUND   285ms 

Loading cover art for track 90ab8c15-08c8-424e-9d18-62f2f35dae7a artist name and track name: Macklemore & Ryan Lewis feat. Wanz Thrift Shop
GET http://coverartarchive.org/release/90ab8c15-08c8-424e-9d18-62f2f35dae7a
307 TEMPORARY REDIRECT   285ms 

Loading cover art for track 433ffa89-1e6a-434a-9bfe-6690f3b6e32a artist name and track name: Them Crooked Vultures Mind Chaser, No Eraser
GET http://coverartarchive.org/release/433ffa89-1e6a-434a-9bfe-6690f3b6e32a
404 NOT FOUND   286ms

Loading cover art for track bc091f8f-17cc-4ad3-8ca3-a7d080c61e1d artist name and track name: Nine Inch Nails The Good Soldier
GET http://coverartarchive.org/release/bc091f8f-17cc-4ad3-8ca3-a7d080c61e1d
404 NOT FOUND   296ms
error for 7b382603-3fda-47d0-8b86-8c661ad616ca
error for 909fbadc-46a5-4bd6-864b-e36d9b47a98e
error for 39ec579c-7a31-4edd-9fd5-d1f48731bf92
GET http://archive.org/download/mbid-dfeacac3-16f0-4ef7-94de-e25679b050c2/index.json
302 Moved Temporarily   1.39s   
error for 49364063-bcb6-4d9f-b2bc-940f76495db9
error for b09e7fcf-0383-4e7c-acb0-d5ab437d6713
error for 433ffa89-1e6a-434a-9bfe-6690f3b6e32a
GET http://archive.org/download/mbid-b776a4df-e8a4-4f23-838a-600b5db75ad3/index.json
302 Moved Temporarily   1.45s
GET http://archive.org/download/mbid-69acc6e3-7fe6-4c8c-991e-860677dcf0db/index.json
302 Moved Temporarily    1.63s
error for bc091f8f-17cc-4ad3-8ca3-a7d080c61e1d
error for 4b5657bb-6209-493a-9e64-2bae4c3d4f1a
特别是,这看起来像完全相同的问题:

我修改了以下代码,以显示状态代码为0:


您是否正在为covertarchive.org编写代码?如果不是,它可能被同一来源的政策阻止了

这是对的。同源策略将阻止您直接向musicbrainz发送ajax调用。您可以尝试将CORS头添加到ajax中,但请记住,您需要解决Firefox的bug。在文档中搜索“CORS”。感谢各位的快速响应-我很困惑,因为Firebug显示的是“正确的”HTTP响应代码。为什么statusCode返回0?这不是HTTP响应,还是有其他方法可以获得它。。状态代码的jQuery文档暗示这是HTTP响应代码。。另外,我正在重读封面艺术档案API文档中关于同一原产地政策的内容——不记得第一次看到过。泰@ardii 0表示未定义。发生的任何其他错误,例如,请求甚至没有发送。我对萤火虫不太熟悉。它可能会在代码之外发送请求本身。只是猜测一下。@Ardi相同来源的策略是由浏览器强制执行的,而不是封面艺术。它完全阻止发送请求。封面艺术需要明确接受浏览器的跨来源请求,以允许您的请求。我不知道他们会不会。一个解决方法是通过你的服务器代理。嗨,伙计们-啊,现在明白了。我想他们没有。作为一个临时解决方案,我已经在服务器上启用了可工作的PHP解决方案。我还得到了一个可以运行的AJAX/浏览器封面艺术查询,可以访问iTunes服务器(我正计划添加一个到iTunes的链接)。谢谢你的帮助!
uuid = "90ab8c15-08c8-424e-9d18-62f2f35dae7a"

$.ajax({
    type: 'GET',
    cache: 'FALSE',
    //contentType: "application/json",
    url: "http://coverartarchive.org/release/"+uuid,
    //data: jsonString,
    statusCode: {
        200: function () { 
            console.debug("200 for " + uuid);
        },
        307: function () {
            console.debug("307 for " + uuid);
        },
        404: function () {
            console.debug("404 for " + uuid);
        },
        0: function() {
            console.debug("0 for " + uuid);
        }
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        console.debug("error for " + uuid);
        console.log(XMLHttpRequest);
    }
});