Javascript Can';t将if/else语句合并到JSON响应中

Javascript Can';t将if/else语句合并到JSON响应中,javascript,jquery,html,json,api,Javascript,Jquery,Html,Json,Api,从API中提取数据并从中显示IMG 我正在尝试合并一个if/else语句,如果搜索词包含来自响应的数据,那么它基本上会显示用户的照片,如果没有,则会显示表示没有结果的文本 当前,如果有JSON结果,它会显示照片,但如果没有,它仍然不会显示text/consolelog。我不明白为什么它不符合else语句 这是代码。我不能做代码笔,因为它会有我的API密钥。有什么明显的我没看到的吗?这应该是如此简单和容易做到,但我不能 // Search for Photos $('form').submit(

从API中提取数据并从中显示IMG

我正在尝试合并一个if/else语句,如果搜索词包含来自响应的数据,那么它基本上会显示用户的照片,如果没有,则会显示表示没有结果的文本

当前,如果有JSON结果,它会显示照片,但如果没有,它仍然不会显示text/consolelog。我不明白为什么它不符合else语句

这是代码。我不能做代码笔,因为它会有我的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();
        });


    })
//搜索照片
$('form')。提交(函数(e){
e、 预防默认值();
//API调用
让输入=document.getElementById(“搜索”).value;
让$submitButton=$(“#submit”);
让searchPhoto=API+'search/photos?'+client_id+'&page=1&query='+input;
//Ajax部分
$.getJSON(searchPhoto,函数(响应){
//创建引导卡的开头
让photoHTML='';
if(response.length!==0){
//在每张回复照片上循环,将其放入一张独特的卡片中
$。每个(响应。结果,功能(i,照片){
//卡片背景
让photoBackground=photo.url.regular;
//下载链接
让下载=photo.links.download+“?force=true”;
//创建要通过下载按钮单击的链接
link=document.createElement('a');
link.href=下载;
link.download='download.jpg';//用户的文件名建议。
document.body.appendChild(链接);
//添加每个卡片元素
photoHTML+='';
photoHTML+='';
photoHTML+='';
photoHTML+='';
photoHTML+=“下载”;//创建唯一ID
photoHTML+='';
})
}否则{
photoHTML+='对不起,伙计,请工作。

; } //终端卡 photoHTML+=''; //将每张卡片放入一个div中 $('#testing').html(photoHTML); 让当前单击的\u id=“”; 让myID=$(document).on('click','common_class',函数(){ 当前单击了\u id=$(this.attr('id'); 返回当前单击的\u id; }); $('.common_class')。单击(函数(e){ //呼叫下载链接 //console.log(e.target.id); console.log(e.target.name); link.href=e.target.name; link.click(); }); })
我的猜测是
response
不是空的。由于您只是循环response.results,我建议您可以使用条件
if(response.results!==未定义和&response.results.length>0)

您是否尝试在
if(response.length!==0)行上放置断点{
看看接下来会发生什么?是的,使用调试器。无需猜测。另外,您没有关闭卡块分区。只需在else语句中添加console.log(response)来调试它。@emanek它正在传递if(respone.length!==0)因为如果有数据,我会得到数据。问题是如果我没有数据。我没有得到控制台日志@Vasi,这就是问题所在。它没有命中。是的!如果没有数据,API会发回响应。谢谢!