2016-03-31 26 views
0

PHPを使ってJSON形式に変換し、AJAX JQueryで表示することでデータベースからレポートを取得したいと考えています。しかし、私は正しくデータを渡すことはできません。誰か私のせいを教えてもらえますか?PHPからJSONデータを抽出してデータテーブルに表示するにはどうすればよいですか?

$(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. ?> 
+3

は自分が 'あなたのAJAX呼び出しでjson_encode'代わりhttp://php.net/manual/en/function.json-encode.php – jcubic

+0

を使用するJSONをエンコードしようとしないでください、データがなければなりませんjsonフォーマット(例えば、 'data:{ay:ay、year:year}')。または、パラメータをURLに追加することもできます(例: 'url:" js/overallreport.php?ay = "+ ay +"&year = "+ year')。 – pxgamer

答えて

1

問題は、次の行にあります:

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); 
+1

これは最新の技術です。 [PHP Manual](http://php.net/manual/en/function.json-encode.php)を参照してください – zypro

+0

_json_encodeには配列_またはオブジェクトが必要です – RiggsFolly

関連する問題