javascript - 如何从 PHP 中提取 JSON 数据并将其显示在数据表中?

标签 javascript php jquery json ajax

我想使用 PHP 将报告转换为 JSON 格式并使用 AJAX JQuery 显示,从而从数据库中获取报告。但我似乎无法正确传递数据。有人可以告诉我我的错吗?

这是我的代码 View :

$(document).ready(function() {

  $("#searchOverall").click(function() {


    var ay = $("#Overall_acadyear").val();
    var year = $("#Overall_year").val();

    if (ay === undefined || ay == '') {

      alert("Select Academic year.");

    } else if (year === undefined || year == '') {

      alert("Select year level.");

    } else {


      $.ajax({

        url: "js/overallreport.php",
        dataType: "json",
        data: "ay=" + ay + "&year=" + year,
        success: function(data) {
                 //left this blank because I am not sure of what I am doing.
                 //I used $.getJSON and $.each
        },

        error: function() {
          alert('Cannot retrieve data from server.');
        }

      }); //ajax




    } //else

  }); //btnOverall



});
//This is the JS FILE
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="form-group col-sm-4">
  <select class="form-control" id="Overall_acadyear">
    <option value='' active>Select AY</option>
    <?php $r->selectAcademicYear(); ?>
  </select>

  <select class="form-control col-sm-4" id="Overall_year" align="right">
    <option value='' active>Select year level</option>
    <?php $r->selectYear(); ?>
  </select>
  <div class="form-group">
    <button type="button" class="control-label btn-success" id="searchOverall" name='createAccount'>Search</button>
    <button type="reset" class="control-label btn-danger" id="reset">Clear Fields</button>
  </div>

  </th>

  </tr>
  <tr>
    <th>Student Number</th>
    <th>Student Name</th>
    <th>Section</th>
    <th>Status</th>
  </tr>
  </thead>
  <tbody id="tableBody">

  </tbody> <!--This is the view file -->

<?php
require($_SERVER['DOCUMENT_ROOT']."/finalsis/include/config.php");
include_once($_SERVER['DOCUMENT_ROOT']."/finalsis/include/class.utility.php");
header("Content-Type: application/json");
$ay = $_GET['ay'];
$year = $_GET['year'];

$ay = $obj->cleanString($ay);
$year = $obj->cleanString($year);


$conn = mysqli_connect(db_server,db_user,db_password,db_database);
$ay = mysqli_escape_string($conn,$ay);
$year = mysqli_escape_string($conn,$year);

$selectSQL = "SELECT studentlevel_student, student_fname, student_mname, student_lname,
section_name, student_status FROM tblstudentlevel inner join
tblstudent on studentlevel_student = student_number inner join
tblyearsection on studentlevel_ys = ys_id WHERE studentlevel_acadyear = '" .$ay."' AND year_name = '" .$year. "'";
$result = mysqli_query($conn,$selectSQL);

$output = '{"student": [';
while($rs = mysqli_fetch_array($result)){
        $name = $obj->getFullName($rs['student_fname'],$rs['student_mname'],$rs['student_lname']);
        $output .= '{"sno":"' .$rs['studentlevel_student']. '", ';
        $output .= '"name":"' .$name. '", ';
        $output .= '"section":"' .$rs['section_name']. '",';
        $output .= '"status":"' .$rs['student_status']. '"},';
    }

$output .= "]}";
mysqli_close($conn);
echo json_encode($output);

 //This is where my data gathering happens. ?>

最佳答案

问题出在以下行:

echo json_encode($output);

json_encode 需要一个数组。您正在传递字符串。

$jsonData = array();
while($rs = mysqli_fetch_array($result)){
    $name = $obj->getFullName($rs['student_fname'],$rs['student_mname'],$rs['student_lname']);

     $jsonData[] = array(
         'sno' => $rs['studentlevel_student'],
         'name' => $name,
     );
 }

echo json_encode($jsonData);

关于javascript - 如何从 PHP 中提取 JSON 数据并将其显示在数据表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36327637/

相关文章:

javascript - 实时代码示例 : cytoscape. js 初始化——不完整?

php - memory_get_peak_usage(true) 有什么作用?

javascript - 在页面加载时加载时间戳并将其与表单提交时的时间戳进行比较

javascript - 如何在 if 语句中包含鼠标滚轮滚动和单击事件?

javascript - 执行顺序 - 新对象的函数未定义

javascript - 使用 promise 链进行错误处理

php - 将数据从 PHP 导入 D3.JS

php - URL Mod 重写

javascript - 为什么在这种情况下 jquery 不调用成功处理程序?

javascript - 如何设置元素的索引