2017-07-31 107 views
1

我有一个脚本,它读取Json字符串的内容并创建一个表来显示数据。只要我在JQuery函数中包含Json字符串,这工作正常。我需要做的是调用另一个php文件,它返回Json字符串。Json从json读取数据调用表

我写了返回JSON字符串的脚本:

[{"ClientName":"Name","RoomName":"Room 2","RoomFromTime":"06:00:00","RoomToTime":"17:00:00"},{"ClientName":"Name","RoomName":"Room 6","RoomFromTime":"06:00:00","RoomToTime":"23:00:00"},{"ClientName":"Name","RoomName":"Room 1","RoomFromTime":"07:00:00","RoomToTime":"17:00:00"},{"ClientName":"Name","RoomName":"Room 14","RoomFromTime":"07:00:00","RoomToTime":"23:00:00"},{"ClientName":"Name","RoomName":"Room 12","RoomFromTime":"07:00:00","RoomToTime":"19:00:00"},{"ClientName":"Name","RoomName":"Room 10","RoomFromTime":"07:00:00","RoomToTime":"23:00:00"},{"ClientName":"Name","RoomName":"Room 9","RoomFromTime":"07:00:00","RoomToTime":"23:00:00"},{"ClientName":"Name","RoomName":"Room 8","RoomFromTime":"07:00:00","RoomToTime":"23:00:00"},{"ClientName":"Name","RoomName":"Room 7","RoomFromTime":"07:00:00","RoomToTime":"23:00:00"},{"ClientName":"Name","RoomName":"Room 5","RoomFromTime":"07:00:00","RoomToTime":"23:00:00"},{"ClientName":"Name","RoomName":"Room 3","RoomFromTime":"07:00:00","RoomToTime":"23:00:00"},{"ClientName":"Name","RoomName":"Room 4","RoomFromTime":"08:00:00","RoomToTime":"23:00:00"},{"ClientName":"Name","RoomName":"Room 15","RoomFromTime":"08:00:00","RoomToTime":"19:00:00"}] 

我JQuery的功能有以下几点:

$(document).ready(function() { 

var json = $.getJSON("get_data.php", function(data){ 

var tr ; 
for (var i = 0; i < json.length; i++) { 
    tr = $('<tr/>'); 
    tr.append("<td><div class='clientname-text'>" + json[i].ClientName + "</div></td>"); 
    tr.append("<td><div class='roomname-text'>" + json[i].RoomName + "</div></td>"); 
    tr.append("<td><div class='time-text'>" + json[i].RoomFromTime + " - " + json[i].RoomToTime + "</div></td>"); 

    $('table').append(tr); 
} 
}); 
}); 

使用呼叫转移到其他的PHP脚本不显示返回的数据在桌子里。现在我知道我在某个地方出了问题,但是anyoe可以看到我做错了什么。

非常感谢您的时间。

UPDATE: Console

回答

1

因为的getJSON默认情况下以异步方式工作,json的变量不填充在回调运行的时间。将回调更改为:

$.getJSON("get_data.php", function(json){ 
... 

看起来有一个围绕您实际jason的包装。 要么修复它是这样的:

$.getJSON("get_data.php", function(json){ 
json = json[0].data; 
... 

或get_data.php修复它。

+0

清楚,没有成才。现在我的表格行显示“Undefinded”这个词,为什么? – DCJones

+0

做一个'console.dir(json);'来找出json中的内容。 – Adder

+0

我想你应该从[json] [i] .ClientName中删除[i],然后写上json.ClientName – Zeljka

0

你可以使用这个100%的工作代码:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width"> 
    <title>JS Bin</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
    <script type="text/javascript"> 
    $(document).ready(function() { 
     $.getJSON("get_data.php", function(data){ 
      $.each(data, function(i, field){ 
       var tr ; 
       tr = $('<tr/>'); 
       tr.append("<td><div class='clientname-text'>" + field.ClientName + "</div></td>"); 
       tr.append("<td><div class='roomname-text'>" + field.RoomName + "</div></td>"); 
       tr.append("<td><div class='time-text'>" + field.RoomFromTime + " - " + field.RoomToTime + "</div></td>"); 
       $('table').append(tr); 
      }); 
     }); 
    }); 
    </script> 
</head> 
<body> 
<table></table> 
</body> 
</html> 

enter image description here