Maison  >  Questions et réponses  >  le corps du texte

Erreur de syntaxe non détectée lors de l'analyse de JSON lors de la réponse à l'aide d'une requête AJAX : jeton inattendu '<', "<br />

J'utilise datefrom et dateto pour créer un menu déroulant, puis afficher les dates entre ces dates, mais il n'apparaît pas et je continue de recevoir ce message d'erreur dans la console.

VM652:1 
        
       Uncaught SyntaxError: Unexpected token '<', "<br />
<b>"... is not valid JSON
    at JSON.parse (<anonymous>)
    at Object.success (<anonymous>:18:30)
    at c (jquery-3.6.0.min.js:2:28327)
    at Object.fireWith [as resolveWith] (jquery-3.6.0.min.js:2:29072)
    at l (jquery-3.6.0.min.js:2:79901)
    at XMLHttpRequest.<anonymous> (jquery-3.6.0.min.js:2:82355)

Voici le script :

<script>
  // Add an event liste ner for the form submission
  document.querySelector('#submit-button').addEventLi stener('click', function()  {
    // Prevent the default form submission behavior
    event.preventDefault();

    // Get the selected values of the "fromdate" and "todate" dropdown menus
    var fromDate = $('#fromdate').val();
    var toDate = $('#todate').val();

    // Send the AJAX request to the PHP script
    $.ajax({
      type: "POST",
      url: "functions/search-sales_function.php",
      data: { fromDate: fromDate, toDate: toDate },
      success: function (response) {
        // Parse the JSON response
        var salesData = JSON.parse(response);

        // Loop over the sales data and insert it into the table
        for (var i = 0; i < salesData.length; i++) {
          var date = salesData[i]['date'];
          var sales = salesData[i]['total_sales'];
          $('#sales-table tbody').append(`
            <tr>
              <td>${date}</td>
              <td>${sales}</td>
            </tr>`
            );
        }
      },
    });
  });

</script>

Voici le fichier php :

<?php
    include "db_conn.php";
      // Get the values of the "fromdate" and "todate" dropdown menus
      $fromDate = $_POST['fromdate'];
      $toDate = $_POST['todate'];

      // Check the connection
      if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
      }

      // Write a SELECT statement to get the sales data between the selected dates
      $sql = "SELECT date, SUM(sales) as total_sales FROM sales WHERE date BETWEEN '$fromDate' AND '$toDate' GROUP BY date ORDER BY date ASC";

      // Execute the SELECT statement and fetch the results
      $result = mysqli_query($conn, $sql);

      // Loop over the results and add a row to the table for each date
      while ($row = mysqli_fetch_assoc($result)) {
        $date = $row['date'];
        $sales = $row['total_sales'];
        echo "<tr>
                <td>$date</td>
                <td>$sales</td>
              </tr>";
      }

      // Close the connection
      mysqli_close($conn);
    ?>

Je souhaite afficher les lignes avec les dates entre les dates sélectionnées mais l'erreur continue d'apparaître dans le journal de la console et le tableau ne s'affiche pas

P粉846294303P粉846294303377 Il y a quelques jours789

répondre à tous(1)je répondrai

  • P粉318928159

    P粉3189281592023-11-02 08:17:14

    L'erreur est liée à l'erreur de réponse de votre méthode ajax. Le code envoyé ajax 请求的结果。您应该在 php 文件中使用 echo json_encode($data); .

    $data = [];
     while ($row = mysqli_fetch_assoc($result)) {
            $data[] = $row;
            echo json_encode($data);
     }

    répondre
    0
  • Annulerrépondre