2016-07-15 63 views
0

我试图通过json对象获取我的数据库数组到表中,但它使我的数据库第一行作为表的元素和其他数据库作为最后一行。未在输出中显示。这里是我的代码我想要获取数据库元素数组到表

<script id="source" language="javascript" type="text/javascript"> 

$(function() 
{ 
    $.ajax({          
    url: 'example.php',    
    data: "",      
            //for example "id=5&parent=6" 
    dataType: 'json',    //data format  
    success: function(data)   //on recieve of reply 

     { 
    for(var i = 0; i < data.length; i++){ 
var uid = data[i];    
var firstname = data[i];  
var lastname = data[i]; 
var email = data[i]; 
var username = data[i]; 
var password = data[i]; 
    } 
     $('#output').html("<b>uid: </b>"+uid+"<b> firstname: </b>"+firstname+"<b> lastname: </b>"+lastname+"<b> email: </b>"+email+"<b> username: </b>"+username+"<b> password: </b>"+password); 


    } 
    }); 
    }); 
    </script> 

使用example.php

<?php 

// server info 
$server = 'localhost'; 
$user = 'root'; 
$pass = ''; 
$db = 'ocean'; 

$connection = mysql_connect($server, $user, $pass) or die(mysql_error()); 
$database = mysql_select_db($db) or die(mysql_error()); 


    $result = mysql_query("select * from oops");  //query 

    $array = array(); 

while ($row = mysql_fetch_row($result)) { 
$array[] = $row; 
} 

echo json_encode($array); 



    ?> 

output comes in that format 应该如何准备在适当的马纳尔该输出

+0

这是什么#output“请出示完整的HTML从什么我看到,它看起来像html()正在取代你以前添加的行。你应该尝试使用append()来代替。 –

回答

2

第一:

$('#output').html("<some code>"); 

覆盖的内容每次。所以,你只能看到最后的结果。我认为你应该使用append()

$('#output').append("<some code>"); 

或收集所有的行到一个变量,并使用html()一次:

var html = ""; 
for(var i = 0; i < data.length; i++){ 
    var uid = data[i];    
    var firstname = data[i];  
    var lastname = data[i]; 
    var email = data[i]; 
    var username = data[i]; 
    var password = data[i]; 

    html += "<b>uid: </b>"+uid+"<b> firstname: </b>"+firstname+"<b> lastname: </b>"+lastname+"<b> email: </b>"+email+"<b> username: </b>"+username+"<b> password: </b>"+password; 
} 
$("#output").html(html); 

二:

var uid = data[i];    
var firstname = data[i];  
var lastname = data[i]; 

所有这些变量指向一个价值data[i]。 也许是:

var uid = data[i].uid;    
var firstname = data[i].firstname;  
var lastname = data[i].lastname; 

更新:

如果你想显示数据表中的行,你可以这样做:

html += "<tr>\ 
    <td><b>uid: </b>"+uid+"<b></td>\ 
    <td><b>firstname: </b>"+firstname+"</td>\ 
    <td><b> lastname: </b>"+lastname+"</td>\ 
    <td><b> email: </b>"+email+"</td>\ 
    <td><b> username: </b>"+username+"</td>\ 
    <td><b> password: </b>"+password+"</td>\ 
</tr>"; 

而在这之后:

$("#output").html("<table>" + html + "</table>"); 
+0

只是一个额外的说明,OP使用'mysql_fetch_row'这意味着这将返回多维数组的数字索引,如果OP使用'* _fetch_assoc'好得多,以便您可以使用列名称,ala'.firstname'你有上面的那个,我更喜欢'$ .each',因为OP使用jquery – Ghost

+0

我得到了你的建议想要的答案。我可以用表格格式打印这个结果。我应该如何实现这一点。 – oceanier

+0

为简单的表结构添加了一些代码。 –

0

您可以取代你的AJAX请致电: $ .ajax({dataType:“json”, url:url, data:data, success:success });

这个使用jQuery:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
$.getJSON("ajax/test.json", function(data) { 
    var items = []; 
    $.each(data, function(key, val) { 
    items.push("<li id='" + key + "'>" + 
    "<b>uid: </b>" + value.uid + 
    "<b> firstname: </b>" + value.firstname + 
    "<b> lastname: </b>" + value.lastname + 
    "<b> email: </b>" + value.email + 
    "<b> username: </b>" + value.username + 
    "<b> password: </b>" + value.password + "</li>"); 
    }); 

    $("<ul/>", { 
    "class": "my-new-list", 
    html: items.join("") 
    }).appendTo("body"); 
}); 

在JavaScript中,当你使用这个:

var uid = data[i];    
var firstname = data[i]; 
... 
var username = data[i]; 
var password = data[i]; 

您设置了所有这些变量具有相同值data[i]。如果你想尝试使用JavaScript的你试试这个:

var uid = data[i].uid;    
var firstname = data[i].firstname;  
... 
var username = data[i].username; 
var password = data[i].password; 

因此,你的代码会像:?

$(function() { 
    $.ajax({ 
     url: 'example.php', 
     data: "", 
     //for example "id=5&parent=6" 
     dataType: 'json', //data format  
     success: function(data) { 
     data.forEach(function(entry) { 
      var uid = entry.uid; 
      var firstname = entry.firstname; 
      var lastname = entry.lastname; 
      var email = entry.email; 
      var username = entry.username; 
      var password = entry.password; 
      } 
      $('#output').append("<b>uid: </b>" + uid + 
      "<b> firstname: </b>" + firstname + 
      "<b> lastname: </b>" + lastname + 
      "<b> email: </b>" + email + 
      "<b> username: </b>" + username + 
      "<b> password: </b>" + password); 
     }); 
    } 
    }); 
});