将 ajax 响应属性放入 Google 图书封面图片的变量中



我正在尝试将来自ajax响应的url放入jquery中的变量中。 我编写了以下代码:

var thumb = $.ajax({
dataType: 'json',
url: 'https://www.googleapis.com/books/v1/volumes?q=isbn:' + isbn,
success: function(response){
return $(response).volumeInfo.imageLinks.thumbnail;
}}).responseText;

通过查看其他答案,我的理解是,我必须在末尾添加 .responseText,否则代码将继续而不等待 ajax 响应。 但是,拇指变量仍未定义。

我尝试通过相关更改实现以下解决方案(由于我一次只传递一个 ISBN,因此不应该有数组。响应应该只包含一个图像链接缩略图网址(,但我似乎无法正确捕获响应。

我研究了其他答案,尤其是这个答案,但我仍然不清楚如何达到 ajax 响应。

$.ajax 是异步的,这意味着代码将完全执行,并且稍后将触发成功回调。

立即评估var thumb。 阅读一些关于"回调"和"承诺"的文章,以更熟悉这个主题。

您的问题的解决方案是:

function setThumbnail(thumbnail){
// this will evaluate later, when the ajax returns success
console.log('thumbnail gotten!');
var thumb = thumbnail; // do something with in in this function
}
$.ajax({
dataType: 'json',
url: 'https://www.googleapis.com/books/v1/volumes?q=isbn:' + isbn,
success: function(response){
setThumbnail($(response).volumeInfo.imageLinks.thumbnail);
}
});
// This line will evaluate immediately and carry on
console.log('ajax executed');

我为您输入了一些日志,以帮助您了解此处的执行顺序。 我还要指出,$(response)对我来说看起来很奇怪,如果不对其进行测试,我认为它可能只是response.volumeInfo....
console.log(response)成功回调,以确保您了解要返回的数据。

相关内容

  • 没有找到相关文章