簡體   English   中英

$ .getJSON()獲取我的數據,$。ajax()沒有

[英]$.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM