您好我正在尝试将数据库中的数据结果解析为我的html视图。我不太清楚我在做什么有什么问题。
这是我的代码:
function display($dbhandler){
$sql = "SELECT * FROM users";
foreach($dbhandler->query($sql) as $row){
$data = array('id'=>$row['id'],
'email'=> $row['email'],
'name'=> $row['name']
);
echo json_encode($data);
}
}
这会给我输出:
{“id”:“1”,“email”:“电子邮件1”,“名称”:“姓名1”} {“id”:“2”,“电子邮件”:“电子邮件 2“,”name“:”名称2“}'
现在当我返回并尝试使用jQuery中的 $。parseJSON(result)解析它时。
function display_list(){
action='select';
$.ajax({
type:"POST",
url:"options.php",
data:{ action : action },
success: function(res){
console.log(res)
results = $.parseJSON(res);
console.log(results);
}
});
}
我收到此错误:
未捕获的SyntaxError:意外的令牌{在位置66的JSON中 在Function.parse [as parseJSON]() at Object.success(actions.js:16) at i(jquery-3.1.1.min.js:2) at Object.fireWith [as resolveWith](jquery-3.1.1.min.js:2) 在A(jquery-3.1.1.min.js:4) 在XMLHttpRequest。 (jquery的-3.1.1.min.js:4)
我试图传递的数据有什么问题吗?欢迎任何建议,谢谢。
答案 0 :(得分:1)
更改以下行:
echo json_encode()($data);
到
echo json_encode($data);
并从循环中删除此行,并在循环结束后放置。并进行以下更改:
success: function(res){
var data = JSON.parse(res);
alert(data[0].name);
}
答案 1 :(得分:0)
试试这个
function display($dbhandler){
$sql = "SELECT * FROM users";
foreach($dbhandler->query($sql) as $row){
$data[] = array('id'=>$row['id'],
'email'=> $row['email'],
'name'=> $row['name']
);
}
echo json_encode($data);
}
我刚刚在[]
之后添加了$data
个大括号
相当于array_push
见php arr_push()
答案 2 :(得分:0)
function display($dbhandler){
$sql = "SELECT * FROM users";
$data = array();
foreach($dbhandler->query($sql) as $row){
$data[] = array('id'=>$row['id'],
'email'=> $row['email'],
'name'=> $row['name']
);
}
echo json_encode($data);
}
关于jQuery函数:
function display_list(){
action='select';
$.ajax({
type:"POST",
url:"options.php",
dataType: 'json',
data:{ action : action },
success: function(json){
console.log(json)
}
});
}
答案 3 :(得分:0)
原来问题是在脚本的服务器端,所以我根据你的建议修改了我的代码,这就是我到达的那个对我有用的。
function display($dbhandler){
$sql = "SELECT * FROM users";
$result = array();
foreach($dbhandler->query($sql) as $row){
$data = array('id'=>$row['id'],
'email'=> $row['email'],
'name'=> $row['name']
);
array_push($result,$data);
}
echo json_encode($result);
}