【发布时间】:2017-07-01 21:05:52
【问题描述】:
从 API 中提取数据并从中显示 IMG。
我正在尝试合并一个 if/else 语句,如果搜索词有来自响应的数据,则基本上显示照片,如果没有,则显示没有结果的文本。
目前,如果有 JSON 结果,它会显示照片,但如果没有,它仍然不会显示 text/consolelog。我不明白为什么它没有命中 else 语句。
这里是代码。我不能做一个 codepen,因为它会有我的 API 密钥。有什么明显的我没有看到吗?这应该很简单很容易做到,但我做不到。
// Search for Photos
$('form').submit(function (e) {
e.preventDefault();
// API Calls
let input = document.getElementById("search").value;
let $submitButton = $('#submit');
let searchPhoto = API + 'search/photos?' + client_id + '&page=1&query=' + input;
// Ajax part
$.getJSON(searchPhoto, function (response) {
// Create beginning of Bootstrap card
let photoHTML = '<div class="col-12 col-sm-12">';
if (response.length !== 0) {
// Loop over each response photo, putting it into a unique card
$.each(response.results, function (i, photo) {
// Card background
let photoBackground = photo.urls.regular;
// Download link
let download = photo.links.download + "?force=true";
// Create a link to be clicked by the download button
link = document.createElement('a');
link.href = download;
link.download = 'Download.jpg'; // The file name suggestion for the user.
document.body.appendChild(link);
// Add each card element
photoHTML += '<article class="card animated fadeInLeft text-center">';
photoHTML += '<img class="card-img-top img-responsive preview" src=' + photoBackground + '/>';
photoHTML += '<div class="card-block">';
photoHTML += '<h4 class="card-title" id="randomTitle"></h4>';
photoHTML += '<button type="button" class="btn btn-outline-primary common_class" name='+download+' id="div' + i + '">Download</button>'; // Create unique ID
photoHTML += '</article>';
})
} else {
photoHTML += '<p>Sorry dude, please work.</p>';
}
// End Card
photoHTML += '</div>';
// Put each card into a div
$('#testing').html(photoHTML);
let currently_clicked_id = '';
let myID = $(document).on('click', '.common_class', function () {
currently_clicked_id = $(this).attr('id');
return currently_clicked_id;
});
$('.common_class').click(function (e) {
// Call download link
// console.log(e.target.id);
console.log(e.target.name);
link.href = e.target.name;
link.click();
});
})
【问题讨论】:
-
您是否尝试在
if (response.length !== 0) {行上放置一个断点,看看接下来会发生什么? -
是的,使用调试器。无需猜测。另外,你没有关闭你的卡块 div。
-
在else语句中添加console.log(response)即可调试。
-
@emanek 它正在传递 if (respone.length !== 0) 因为如果有数据我确实会取回数据。问题是如果我没有数据。
-
我没有得到控制台日志@Vasi 这就是问题所在。它没有击中。
标签: javascript jquery html json api