未捕获的语法错误:意外的标记'<', "<br />对 AJAX 请求的响应使用 JSON 解析时

问题描述 投票:0回答:3

我正在使用 datefrom 和 dateto 制作一个下拉菜单,然后显示这些日期之间的日期,但它没有显示,并且我不断在控制台中收到此错误消息。

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)

这是脚本:

<script>
  // Add an event listener for the form submission
  document.querySelector('#submit-button').addEventListener('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>

这是 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);
    ?>

我想显示日期在所选日期之间的行,但控制台日志中不断显示错误,并且表格未显示

javascript php json ajax syntax-error
3个回答
2
投票

该错误与您的ajax方法的响应错误有关。该代码发送了

ajax
请求的结果。您应该在 php 文件中使用
echo json_encode($data);

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

0
投票

@Paul TSL 不使用高于 8.0 的服务器 php 版本就没有办法解决同样的问题吗


-1
投票

我在使用 Jquery.Fileupload 脚本时遇到此错误 我通过将服务器 php 版本降级到 8.0 来解决,当时它是 8.1

© www.soinside.com 2019 - 2024. All rights reserved.