[英]$.getJSON() gets me data, $.ajax() does not
我試圖將SoundCloud URL解析為軌道ID,因此以后可以將軌道ID與SC.stream()
。
這段代碼可以工作,但是由於它是異步的,因此無法與我的其余代碼一起工作:
$.getJSON(
'http://api.soundcloud.com/resolve.json?url=' + trackUrl + '&client_id=' + clientId,
function(result) {
console.log('Track ID: ' + result.id);
setTrackId(result.id);
}
);
我正在嘗試使用.ajax()
做同樣的事情,因此它可以是異步的,但我無法使其正常工作。 控制台顯示GET錯誤。
這是代碼:
$.ajax({
url: 'http://api.soundcloud.com/resolve.json?url=' + trackUrl + '&client_id=' + clientId,
dataType: 'json',
async: false,
success: function(result) {
console.log('Track ID: ' + result.id);
setTrackId(result.id);
}
});
如何使我的Ajax代碼正常工作? 還是我做錯了一切? 試圖尋找答案,但沒有發現任何有用的信息。 謝謝。
編輯:這是我其余的代碼: http : //codepen.io/etzolin/pen/Jonqe
自從我進行跨域調用以來,我無法使用async: false
,而且看來我也永遠不應該這樣做。
我通過使用$.getJSON()
並簡單地使音樂流代碼成為一個函數來解決問題,使其可以在success
回調中運行:
$.getJSON(
'http://api.soundcloud.com/resolve.json?url=' + trackUrl + '&client_id=' + clientId, function(result) {
console.log('Track ID: ' + result.id);
setTrackId(result.id);
streamTrack();
}
);
根據您的回答,因為您正在進行跨域調用,因此可以在.ajax調用中為以下選項設置一個選項:
$.ajax({
url: 'http://api.soundcloud.com/resolve.json?url=' + trackUrl + '&client_id=' + clientId,
dataType: 'json',
async: false,
crossDomain: true,
success: function(result) {
console.log('Track ID: ' + result.id);
setTrackId(result.id);
}
});
在這里,可以選擇將crossDomain設置為true。 從1.5版開始可用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.