2013-04-22 124 views
4

我有一個PHP文件,以JSON格式輸出。代碼如下 -JSON輸出沒有顯示

<?php 
    include 'configure.php'; 
    $qr = "SELECT * FROM student_details"; 
    $res= mysql_query($qr); 
    $i=0; 
    while($row = mysql_fetch_array($res)) 
     { 
     $stud_arr[$i]["full_name"] = $row["full_name"]; 
     $stud_arr[$i]["reg_no"] = $row["regno"]; 
     $stud_arr[$i]["address"] = $row["address"]; 
     $stud_arr[$i]["mark1"] = $row["mark1"]; 
     $stud_arr[$i]["mark2"]= $row["mark2"]; 
     $stud_arr[$i]["mark3"] = $row["mark3"]; 
    $i++; 
    } 
    header('Content-type: application/json'); 
    echo json_encode($stud_arr); 
    ?> 

此文件時,我的服務器上運行,是給我的結果完全,即所有學生的詳細信息和他們的標誌如下 -

[{"full_name":"Lohith","reg_no":"100","address":"street, lane","mark1":"90","mark2":"87","mark3":"88"},{"full_name":"Ranjeet","reg_no":"101","address":"dfkljg","mark1":"56","mark2":"45","mark3":"39"},{"full_name":"karthik","reg_no":"102","address":"askjldf","mark1":"85","mark2":"90","mark3":"100"}] 

現在我想上使用的HTML文件顯示此 -

function getAllDetails() 
{ 
var myTable = '' ; 
myTable += '<table id="myTable" cellspacing=0 cellpadding=2 border=1>' ; 
    myTable += "<tr><td><b>No</b></td><td><b>Full Name</b></td><td><b>Mark1</b></td><td><b>Mark2</b></td><td><b>Mark3</b></td></tr>";var url = "json-example2.php"; 
    $.getJSON(url, function(json) { $.each(json, function(v) {  
       myTable += "<tr><td>"+v.reg_no+"</td><td>"+v.full_name+"</td><td>"+v.mark1+ 
       "</td><td>"+v.mark2+ 
       "</td><td>"+v.mark3+ 
       "</td></tr>"; }); 

       $("#stud_tbl").html(myTable);});}; 

上面的代碼被顯示的表,但表示在表中的每個數據單元「未定義」。

No Full Name  Mark1   Mark2   Mark3 
undefined undefined undefined undefined undefined 
undefined undefined undefined undefined undefined 
undefined undefined undefined undefined undefined 

請幫助如何進行調試。

+0

可能重複[如何返回從AJAX調用的響應?](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-打電話) – Bergi 2013-04-22 10:52:30

回答

3

jQuery.each()的第一個參數是值的索引,第二個參數是值。

解決方案改變$.each(json, function(v) {$.each(json, function(i v) {

function getAllDetails() { 
    var myTable = ''; 
    myTable += '<table id="myTable" cellspacing=0 cellpadding=2 border=1>'; 
    myTable += "<tr><td><b>No</b></td><td><b>Full Name</b></td><td><b>Mark1</b></td><td><b>Mark2</b></td><td><b>Mark3</b></td></tr>"; 
    var url = "data.json"; 
    $.getJSON(url, function(json) { 
       $.each(json, function(i, v) { 
          myTable += "<tr><td>" + v.reg_no + "</td><td>" 
            + v.full_name + "</td><td>" + v.mark1 
            + "</td><td>" + v.mark2 + "</td><td>" 
            + v.mark3 + "</td></tr>"; 
         }); 

       $("#stud_tbl").html(myTable); 
      }); 
}; 

演示:Plunker

+0

啊!我錯過了這個......現在正在工作......完美..非常感謝你 – 2013-04-22 11:57:12

0

$.each有兩個參數一個是index,另一個是value

 $.each(json, function(index, value) { 
         myTable += "<tr><td>" + value.reg_no + "</td><td>" 
           + value.full_name + "</td><td>" + value.mark1 
           + "</td><td>" + value.mark2 + "</td><td>" 
           + value.mark3 + "</td></tr>"; 
        }); 
0

嘗試以下。以下是演示在http://jsfiddle.net/H3cjC/3/

HTML是

<div class="tbl"> 
</div> 

var data='[{"full_name":"Lohith","reg_no":"100","address":"street, lane","mark1":"90","mark2":"87","mark3":"88"},{"full_name":"Ranjeet","reg_no":"101","address":"dfkljg","mark1":"56","mark2":"45","mark3":"39"},{"full_name":"karthik","reg_no":"102","address":"askjldf","mark1":"85","mark2":"90","mark3":"100"}]' 
data=$.parseJSON(data); 
var myTable = '' ; 
myTable += '<table id="myTable" cellspacing=0 cellpadding=2 border=1>' ; 
    myTable += "<tr><td><b>No</b></td><td><b>Full Name</b></td><td><b>Mark1</b></td><td><b>Mark2</b></td><td><b>Mark3</b></td></tr>";var url = "json-example2.php"; 
$.each(data, function(i,v) {  
    myTable += "<tr><td>"+data[i].reg_no+"</td><td>"+data[i].full_name+"</td> <td>"+v.mark1+ 
       "</td><td>"+data[i].mark2+ 
       "</td><td>"+data[i].mark3+ 
       "</td></tr>"; 
}); 
$('.tbl').html(myTable); 
0

您必須使用各個功能的第二個參數。

function getAllDetails() 
    { 
    var myTable = '' ; 
    myTable += '<table id="myTable" cellspacing=0 cellpadding=2 border=1>' ; 
    myTable += "<tr><td><b>No</b></td><td><b>Full Name</b></td><td><b>Mark1</b></td><td><b>Mark2</b></td><td><b>Mark3</b></td></tr>"; 
    var url = "SCRIPTNAME.php"; 
    $.getJSON(url, function(json) { $.each(json, function(v, x) { 
     console.log("REG NR = "+x.reg_no); 
     myTable += "<tr><td>"+x.reg_no+"</td><td>"+x.full_name+"</td><td>"+x.mark1+ 
      "</td><td>"+x.mark2+ 
      "</td><td>"+x.mark3+ 
      "</td></tr>"; }); 

     $("#stud_tbl").html(myTable); 
    }); 
    } 
+0

啊!我錯過了......現在正在工作......完美..非常感謝 – 2013-04-22 11:56:38