将输入值更改为JSON值

时间:2015-02-09 16:47:46

标签: json

我希望将原始文本输入值更改为JSON值。

这是一个被搜查的类似艺术家之一。但每当我点击按钮进行搜索时,我都需要该值来替换输入值。

因此,例如,如果我搜索Metallica,下面的代码将随机选择1个相似的艺术家,然后我希望它替换最初设置的Metallica搜索。

<input id="artists" type="text"</input>
<button id="searchy">Search Now</button>

function newartist(artist) {
    var url = 'http://developer.echonest.com/api/v4/artist/similar';
    var args = {
        format:'json', 
        api_key : apikey,
        name: artist,
        results : 5,
    };

    $.getJSON(url, args,
            function(data) {
                    var artist = data.response.artists[Math.floor(Math.random()*data.response.artists.length)];
                    console.log(artist.name);
            }
        );
}

function start() {
    var artist = $.trim($("#artists").val()); 
}

$(document).ready(function() {
    $("#searchy").click(start);
});

有没有办法将原始输入值替换为新的JSON值?

任何帮助都会感激不尽,谢谢。

1 个答案:

答案 0 :(得分:0)

听起来你想在Metallica上搜索(例如),然后从结果中随机选择一个艺术家,然后再次搜索。我认为你不想继续循环。

如果是这样,只需从成功回调中拨打newartist,并带一个标记,表示不再这样做:

function newartist(artist, dontRepeat) {
    var url = 'http://developer.echonest.com/api/v4/artist/similar';
    var args = {
        format:'json', 
        api_key : apikey,
        name: artist,
        results : 5,
    };

    $.getJSON(url, args,
            function(data) {
                    var artist;

                    if (dontRepeat || data.response.artists.length === 0) {
                        // ...do something useful with the results
                    } else {
                        // Do the second search
                        artist = data.response.artists[Math.floor(Math.random()*data.response.artists.length)];
                        newartist(artist.name, true);
                    }
            }
        );
}