2015-02-09 55 views
0

我正在寻找将原始文本输入值更改为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

有没有JSON在这里。 JSON仅在幕后使用。当你的代码处理它时,它是一个JavaScript对象,而不是JSON文本(并且JSON总是文本,如HTML)。 – 2015-02-09 16:51:17

回答

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); 
        } 
      } 
     ); 
} 
+0

这很好,谢谢。 – Derg 2015-02-09 17:12:32