无法将JSON值分配给JS变量

3

我正在构建一个YT mp3下载器。我正在使用youtubeinmp3的API。以下是我以JSON格式获取下载链接的方法。

API返回的JSON数据?

我使用这个方法将“link”的JSON值分配给JS变量ytdlink。但是,它无法工作,ytdlink的值被设置为“function link() { [native code] }”。

function getyt()
            {
            var a = document.getElementById("mquery").value;
                $.get(
                    "http://www.youtubeinmp3.com/fetch/?format=JSON",
                    {
                        video:a
                    },function(data) {
                    console.log(data);
                    var ytdlink = data.link;
                    });

            }

如何将链接分配给JS变量?


1
$.get有一个第四个参数"dataType",你应该将其设置为"json"。目前你得到的是一个字符串。 - James
@James 根据文档,它应该能够智能地猜测并转换为 JSON。 - mhodges
@mhodges 应该是这样的,但事实并非如此。为什么在你的回答中建议将字符串单独解析成对象,如果本应已经完成呢? - James
@James 我之前的评论更多是想知道为什么它没有自动转换。我想知道这是否与link值中的转义字符有关?老实说,我不确定。。 - mhodges
1
youtubeinmp3.com返回的Content-Type是text/html而不是application/json,这可能就是原因。请注意,使用第四个参数设置为json将强制进行转换。 - James
显示剩余2条评论
1个回答

2

由于link是字符串原型上的一个函数,而您正在使用JSON字符串,这就是为什么它会输出

function link() { [native code] }

您必须对data使用JSON.parse()才能访问属性,如下所示:

var obj = JSON.parse(data);
var ytdlink = obj.link;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接