Maison > Questions et réponses > le corps du texte
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粉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); }