我正在構建一個應用程序,並且在從客戶端發出請求時發送問題,將其發送到我的服務器,讓服務器進行API調用,然後發送結果回到客戶端。我正在使用Node和Request-Promise模塊。異步Javascript請求問題(節點,請求承諾模塊)
這裏是客戶端代碼:
$(document).ready(function() {
var artistSearch =() => {
const q = $('.artistName').val();
$.ajax({
type: "POST",
url: "http://localhost:3000/request",
data: {artist: q},
})
.done(function(data) {
console.log('data: ', data)
})
};
$(".artistSearch").submit(() => {
artistSearch();
});
});
這成功地向服務器的請求:
app.post('/request', (req, res) => {
const artist = req.body.artist;
const searchURL = "https://api.spotify.com/v1/search? q="+artist+"&type=artist";
var targetObj;
var options = {
uri: searchURL
};
rp(options)
.then(function (data) {
console.log(data);
res.send(data);
})
.then(function() {
console.log('complete');
})
.catch(function (err) {
console.log('error')
});
});
它最終成功地從API調用抓取數據,但從未將它發送回客戶端!如果我在我的承諾之外做res.send(),我可以在客戶端收到數據。
有什麼我失蹤?提前致謝!
您不會得到_any_日誌? –
這是一個錯字錯誤哈哈。您在代碼中發送字符串「data」而不是變量「data」。 –
這是出於測試目的 - 即使仍然沒有數據通過。 –