JSON输出没有显示

问题描述:

我有一个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://*.com/questions/14220321/how-to-return-the-response-from-an-ajax-打电话) – Bergi 2013-04-22 10:52:30

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

$.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>"; 
        }); 

尝试以下。以下是演示在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); 

您必须使用各个功能的第二个参数。

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