我正在尝试将来自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)
成功回调,以确保您了解要返回的数据。