2017-01-16 148 views
-2

我的JSON调用使用Flickr API并在Dreamweaver中正确返回图像 - 但它在Chrome中无法正常工作。JSON在浏览器中不起作用,但在Dreamweaver中工作

调试后,它只是跳过下面的代码的功能(数据)部分:

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?", { 
    tags: keyword, 
    tagmode: "any", 
    format: "json" 
}, function(data) { 
    alert("Got JSON"); 
    var rnd = Math.floor(Math.random() * data.items.length); 

    var image_src = data.items[rnd]['media']['m'].replace("_m", "_b"); 

    [...] 
}); 

任何想法吗?我听说这可能与浏览器安全性无关,而不允许操作。

+2

你打开开发者工具('F12'),并检查是否有一个错误在那里? –

+0

@ ssc-hrep3我已经完成了,没有记录错误。我添加了换行符,它似乎跳过了函数(数据)部分。 –

+1

您是否检查网络标签?那里有错误吗?很可能是的,如果该功能没有执行。 –

回答

0

我已经为此添加了评论,但是由于我想添加更多信息,我会创建一个答案。

我很确定这是一个与“关键字”变量有关的问题,因为“”charlieftl“已经在评论中说过,如果您对关键字进行硬编码,请求会正常工作 getJSON函数有3个参数:网址,您提供给该网址的数据以及您的成功回调函数。正如其名称所示,成功回调函数只会在您的请求成功时才会执行,如果不成功,那么它只会看起来好像它。跳过

一件事,你能做的,就是用更明确的回调函数,以避免一些混乱,比如:

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?", { 
    tags: keyword, 
    tagmode: "any", 
    format: "json" 
}) 
.done(function(data){ 
    alert("Got JSON"); 
    var rnd = Math.floor(Math.random() * data.items.length); 

    var image_src = data.items[rnd]['media']['m'].replace("_m", "_b"); 

    [...] 
}) 
.fail(function(jqxhr, textStatus, error){ 
    //do something with the error 
}); 

这样,您将避免这些混淆,并且您还将能够看到确切的错误(或者您始终可以转到网络选项卡查看请求状态和任何可能的错误消息)。

如果您想了解更多有关的getJSON功能,你可以在这里阅读文档:http://api.jquery.com/jquery.getjson/

相关问题