[英]Receive JSON ENCODED Data from all rows of table from php and show in html table using ajax
I am struggling from a few hours but not getting to any point,neither i am able to find any proper solution for this. 我从几个小时开始苦苦挣扎,但没有任何进展,我也找不到任何合适的解决方案。 I am trying to retrieve json data(includes rows from table) and show in html table using ajax .The point where i am now is it only show one row when i use the following code but give errors when i try to parse data from all rows:
我正在尝试检索json数据(包括表中的行)并使用ajax在html表中显示。我现在的要点是,当我使用以下代码时仅显示一行,但是当我尝试从所有位置解析数据时给出错误行:
PHP PHP
if (isset($_POST['groups_per_table'])){
try{
$stmt = $db_con->prepare("SELECT * FROM groups_permissions");
$stmt->execute();
$response = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$response['id'] = $row['id'];
$response['group'] = $row['group'];
$response['restricted_pages'] = $row['restricted_pages'];
$response['restricted_permissions'] = $row['restricted_permissions'];
echo json_encode($response);
}
}
catch(PDOException $e){
echo $e->getMessage();
}
}`
if i use in the query WHERE id=1 (ie the firt row only)then it display the data correctly: 如果我在查询中使用WHERE id = 1 (即仅第一个行),那么它将正确显示数据:
JS JS
$( document ).ready(function() {
groups_per_table();
function groups_per_table(){
$.ajax({
type: "POST",
url : '../core/ajaxpdo.class.php',
data: 'groups_per_table='+'givedata',
success: function (response) {
var gp_data = $.parseJSON(response);
console.log(response);
$("#gp_body").html('<tr><td class="text-center"><label id="'+gp_data.id+'" class="csscheckbox csscheckbox-primary"><input type="checkbox"><span></span></label></td><td><strong>'+gp_data.group+'</strong></td><td>'+gp_data.restricted_pages+'</td><td>'+gp_data.restricted_permissions+'</td><td class="text-center"><a href="javascript:void(0)" data-toggle="tooltip" title="" class="btn btn-effect-ripple btn-sm btn-success" style="overflow: hidden; position: relative;" data-original-title="Edit User"><span class="btn-ripple animate" style="height: 32.2917px; width: 32.2917px; top: -6.81251px; left: 0.3229px;"></span><i class="fa fa-pencil"></i></a><a href="javascript:void(0)" data-toggle="tooltip" title="" class="btn btn-effect-ripple btn-sm btn-danger" style="overflow: hidden; position: relative;" data-original-title="Delete User"><i class="fa fa-times"></i></a></td></tr>');
},
error: function() {
alert('There is an error!');
}
});
return false;
}});
I want to show all rows from db in table,it gives following error in console: 我想在表中显示数据库中的所有行,它在控制台中给出以下错误:
CONSOLE LOG 控制台日志
Uncaught SyntaxError: Unexpected token { in JSON at position 76
at Function.parse [as parseJSON] (<anonymous>)
at Object.success (groups-permissions.php:968)
at u (jquery-3.3.1.min.js:2)
at Object.fireWith [as resolveWith] (jquery-3.3.1.min.js:2)
at k (jquery-3.3.1.min.js:2)
at XMLHttpRequest.<anonymous> (jquery-3.3.1.min.js:2)
THE JSON DATA JSON数据
{"id":"1","group":"group","restricted_pages":"","restricted_permissions":""}{"id":"2","group":"newgroup","restricted_pages":"b","restricted_permissions":"f"}{"id":"3","group":"asd","restricted_pages":"a,b,c,d","restricted_permissions":"e,f,g,h"}
Make a loop to put your data in the DOM: 循环以将数据放入DOM:
var testObject = [{ "id": "1", "group": "group", "restricted_pages": "", "restricted_permissions": "" }, { "id": "2", "group": "newgroup", "restricted_pages": "b", "restricted_permissions": "f" }, { "id": "3", "group": "asd", "restricted_pages": "a,b,c,d", "restricted_permissions": "e,f,g,h" } ]; function putdataToDom(gp_data) { $("#gp_body").html(''); for (var i = 1; i < gp_data.length; i++) { $("#gp_body").append('<tr><td class="text-center"><label id="' + gp_data[i].id + '" class="csscheckbox csscheckbox-primary"><input type="checkbox"><span></span></label></td><td><strong>' + gp_data[i].group + '</strong></td><td>' + gp_data[i].restricted_pages + '</td><td>' + gp_data[i].restricted_permissions + '</td><td class="text-center"><a href="javascript:void(0)" data-toggle="tooltip" title="" class="btn btn-effect-ripple btn-sm btn-success" style="overflow: hidden; position: relative;" data-original-title="Edit User"><span class="btn-ripple animate" style="height: 32.2917px; width: 32.2917px; top: -6.81251px; left: 0.3229px;"></span><i class="fa fa-pencil"></i></a><a href="javascript:void(0)" data-toggle="tooltip" title="" class="btn btn-effect-ripple btn-sm btn-danger" style="overflow: hidden; position: relative;" data-original-title="Delete User"><i class="fa fa-times"></i></a></td></tr>'); } } putdataToDom(testObject); $(document).ready(function() { groups_per_table(); function groups_per_table() { $.ajax({ type: "POST", url: '../core/ajaxpdo.class.php', data: 'groups_per_table=' + 'givedata', success: function(response) { var gp_data = $.parseJSON(response); console.log(response); putdataToDom(gp_data); }, error: function() { alert('There is an error!'); } }); return false; } });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <table id="gp_body" border=1></table>
This is SyntaxError in your JSON, which means your JSON is not a valid JSON, your json results should be something like this: 这是JSON中的SyntaxError ,这意味着您的JSON不是有效的JSON,您的JSON结果应如下所示:
[{
"id": "1",
"group": "group",
"restricted_pages": "",
"restricted_permissions": ""
}, {
"id": "2",
"group": "newgroup",
"restricted_pages": "b",
"restricted_permissions": "f"
}, {
"id": "3",
"group": "asd",
"restricted_pages": "a,b,c,d",
"restricted_permissions": "e,f,g,h"
}]
So what I suggest you to do is to add another array, you can call it $json and push your data to it like so: 因此,我建议您添加另一个数组,可以将其命名为$ json并将数据推送到其中,如下所示:
// ...
$response = array();
$json = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$response['id'] = $row['id'];
$response['group'] = $row['group'];
$response['restricted_pages'] = $row['restricted_pages'];
$response['restricted_permissions'] = $row['restricted_permissions'];
array_push($json, $response);
}
echo json_encode($json);
// ...
$( document ).ready(function() {
groups_per_table();
function groups_per_table(){
$.ajax({
type: "POST",
url : '../core/ajaxpdo.class.php',
data: 'groups_per_table='+'givedata',
success: function (response) {
var gp_data = $.parseJSON(response);
for(var i = 0; i < gp_data.length; i++) {
$("#gp_body").html('<tr><td class="text-center"><label id="'+gp_data[i].id+'" class="csscheckbox csscheckbox-primary"><input type="checkbox"><span></span></label></td><td><strong>'+gp_data[i].group+'</strong></td><td>'+gp_data[i].restricted_pages+'</td><td>'+gp_data[i].restricted_permissions+'</td><td class="text-center"><a href="javascript:void(0)" data-toggle="tooltip" title="" class="btn btn-effect-ripple btn-sm btn-success" style="overflow: hidden; position: relative;" data-original-title="Edit User"><span class="btn-ripple animate" style="height: 32.2917px; width: 32.2917px; top: -6.81251px; left: 0.3229px;"></span><i class="fa fa-pencil"></i></a><a href="javascript:void(0)" data-toggle="tooltip" title="" class="btn btn-effect-ripple btn-sm btn-danger" style="overflow: hidden; position: relative;" data-original-title="Delete User"><i class="fa fa-times"></i></a></td></tr>');
}
},
error: function() {
alert('There is an error!');
}
});
return false;
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.