You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于jQuery从JSON源循环追加图片的技术实现问询

Solution to Loop Through JSON Images with jQuery & Bootstrap

Hey there! Let's get your image loop working properly with jQuery and Bootstrap. I noticed a few small issues in your existing code, so here's a polished solution with explanations:


Step 1: Set Up Your Bootstrap HTML Structure

First, let's make sure your HTML uses proper Bootstrap grid and card components for a clean, responsive layout:

<div class="container mt-4">
  <!-- Row to hold vehicle cards -->
  <div id="vehicles-container" class="row g-4"></div>
  <!-- Error/info message area -->
  <div id="info" class="mt-4"></div>
</div>

Step 2: Corrected jQuery AJAX Code

Here's the fixed AJAX call that properly loops through your JSON data and appends images to the page:

$.ajax({
  url: 'https://services.web.bilinfo.dk/api/vehicle/?user=demo&password=ocfB6XzF73&format=json',
  type: 'GET',
  dataType: 'json', // Let jQuery auto-parse the JSON response
  error: function() {
    $('#info').html('<div class="alert alert-danger">Oops! An error occurred while loading vehicle data.</div>');
  },
  success: function(vehicles) {
    // Clear any previous error messages
    $('#info').empty();

    // Handle empty data case
    if (!vehicles || vehicles.length === 0) {
      $('#info').html('<div class="alert alert-warning">No vehicles found in the dataset.</div>');
      return;
    }

    // Loop through each vehicle in the JSON response
    $.each(vehicles, function(index, vehicle) {
      // Create a Bootstrap col-md-4 column for each vehicle
      const vehicleColumn = $('<div class="col-md-4"></div>');
      
      // Create a Bootstrap card to wrap the vehicle content
      const card = $('<div class="card h-100"></div>');

      // Handle vehicle images (check if pictures exist first)
      if (vehicle.Pictures && vehicle.Pictures.length > 0) {
        // Loop through each picture for the vehicle
        vehicle.Pictures.forEach(pictureUrl => {
          const img = $('<img>')
            .attr('src', pictureUrl)
            .attr('alt', `Vehicle ${index + 1} Image`)
            .addClass('card-img-top');
          
          card.append(img);
        });
      } else {
        // Add a placeholder image if no pictures are available
        const placeholder = $('<img>')
          .attr('src', 'https://via.placeholder.com/300x200?text=No+Image+Available')
          .attr('alt', 'No image available')
          .addClass('card-img-top');
        
        card.append(placeholder);
      }

      // Optional: Add vehicle details to the card body
      const cardBody = $('<div class="card-body"></div>');
      cardBody.append(`<h5 class="card-title">Vehicle #${index + 1}</h5>`);
      card.append(cardBody);

      // Add the card to the column, then the column to the container
      vehicleColumn.append(card);
      $('#vehicles-container').append(vehicleColumn);
    });
  }
});

Key Improvements & Fixes:

  • Variable Clarity: Renamed the success parameter to vehicles and loop variable to vehicle to avoid overwriting the original data object (a common bug in your initial code).
  • Automatic JSON Parsing: Added dataType: 'json' so jQuery handles parsing the response for you—no manual JSON.parse needed.
  • Bootstrap Best Practices: Used proper grid (col-md-4) and card components for a responsive, clean layout, with spacing classes (g-4, mt-4) for better visual appeal.
  • Robust Error Handling: Improved error messages with Bootstrap alert classes, and added handling for empty datasets to avoid silent failures.
  • Picture Safety: Checks if the Pictures property exists and has content before looping, plus adds a placeholder image for vehicles without pictures to prevent broken image tags.
  • Clean Element Creation: Uses jQuery's element creation methods instead of messy HTML string concatenation, which reduces syntax errors and makes the code easier to maintain.

Edge Case Note:

If your Pictures property returns a single URL instead of an array, adjust the image handling section to this:

// For single picture URLs instead of arrays
if (vehicle.Pictures) {
  const img = $('<img>')
    .attr('src', vehicle.Pictures)
    .attr('alt', `Vehicle ${index + 1} Image`)
    .addClass('card-img-top');
  card.append(img);
} else {
  // Add placeholder image here
}

内容的提问来源于stack exchange,提问作者Mr P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:42:31