2015-02-09 108 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