【问题标题】:display json data in bootstrap card using jquery使用 jquery 在引导卡中显示 json 数据
【发布时间】:2019-05-14 14:56:49
【问题描述】:

我正在尝试使用 for 循环在引导卡中显示包含图像数组和 para 的 Json 数据,它显示卡,但仅在一张卡中显示图像,但有五张卡。

Json 文件内容:

[{"image" : "abc.png" , "para" : "Hi..iam rohit.and this 1st card"},{"image" : "sqr.png", "para" : "Hi..iam rakesh.and this 2st card"},{...},{....}...]

卡片显示在:

<div class="row" id="printcard">  

</div> 

关联的 Ajax.js:

var vimg;
var html ='<div class="col-md-12">';
             html +='<div class="card">';
             html +='<div class="row">';
             html +='<div class="col-md-4" id="userimg"> </div>';
             html +='<div class="col-md-8 px-3">';
             html +='<div class="card-block px-3">';
             html +='<h4 class="card-title">sometitle</h4>';
             html +='</div>';
             html +='</div>';
             html +='</div>';
             html +='</div>';
             html +='</div>';    

$(document).ready(function(){   
    $.ajax({ 
    type: 'GET', 
    url: 'http://localhost:8080/demo/Json', 
    dataType: 'json',
    success: function (data) {    /* Here data length is 5*/

         for(var i=0;i<data.length;i++){
             $('#printcard').append(html);

            uimg=data[i].image;

            var $img = $("<img/>");
            $img.width('340px');
            $img.height('220px');
            $img.attr("src", "data:image/png;base64," + uimg);
            $("#userimg").append($img);
         }

    }
});
});

当我运行这个示例时,它显示了 5 张卡片,但只有第一张卡片有图像。如何解决此问题以及如何在每张卡片中打印 Json 数据/Para。

【问题讨论】:

  • 仍然只在第一张卡片中显示图像,其余卡片没有图像..

标签: javascript jquery html json ajax


【解决方案1】:

你有两个问题

  1. id="userimg" id 只能是一对一的元素
  2. $("#userimg").append($img); 这将只选择第一个

所以改变这两件事

 html +='<div class="col-md-4" id="userimg"> </div>'

html +='<div class="col-md-4 userimg" > </div>'

$("#userimg").append($img);

$(".userimg:eq("+i+")").append($img);

var vimg;
var data=[{"image" : "abc.png" , "para" : "Hi..iam rohit.and this 1st card"},{"image" : "sqr.png", "para" : "Hi..iam rakesh.and this 2st card"}]
var html = '<div class="col-md-12">';
html += '<div class="card">';
html += '<div class="row">';
html += '<div class="col-md-4 userimg"> </div>';
html += '<div class="col-md-8 px-3">';
html += '<div class="card-block px-3">';
html += '<h4 class="card-title">sometitle</h4>';
html += '</div>';
html += '</div>';
html += '</div>';
html += '</div>';
html += '</div>';

for (var i = 0; i < data.length; i++) {
  $('#printcard').append(html);

  uimg = data[i].image;

  var $img = $("<img/>");
  $img.width('340px');
  $img.height('220px');
  $img.attr("src", "data:image/png;base64," + uimg);
  $(".userimg:eq("+i+")").append($img);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="row" id="printcard">  

</div>

【讨论】:

  • 感谢解决方案,它适用于图像...并显示每张卡片中的 Json 文本数据我应该包含..var vtxt=data[i].para; $(".cardpara:eq("+i+")").append($vtext);在for循环中
  • @RK 是的,和我一样
【解决方案2】:

我猜问题出在迭代中,你应该使用$.each,但是如果你想坚持for,这样做:

uimg=data.image[i];

【讨论】:

    猜你喜欢
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 2014-09-30
    • 2020-01-07
    • 1970-01-01
    相关资源
    最近更新 更多