首页 新闻 赞助 找找看

js获取json字符串结果

0
[已解决问题] 解决于 2019-01-08 15:41

PHP中利用sqlsrv_fetch_array将结果转换为以下格式:
{"PatientID":1,"PatientName":"陈test","IdentityCardNo":"5245655455555545"}{"PatientID":22,"PatientName":"testchild","IdentityCardNo":"205003"}{"PatientID":168,"PatientName":"刘欣","IdentityCardNo":"5201031974102837"}{"PatientID":177,"PatientName":"刘宇","IdentityCardNo":"5201131903120417"}{"PatientID":178,"PatientName":"刘宇","IdentityCardNo":"5201131983120417"}

在HTML页面怎么用js循环遍历取出对应的值,以下是我的js代码:
function loadUse(){
var xhr = createXhr();
xhr.open("get","project.php",true);
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
//对响应数据的处理
//1.接收响应数据并转换为JS数组
var resText = xhr.responseText;
//var users = JSON.parse(resText);
var user = JSON.stringify(resText);
var users = JSON.parse(user);
//2.循环遍历数组,拼<tr>
var html ="";
for(var i = 0;i<users.length;i++){
//var user = resText;
var user = users[i];
console.log(user);
html += "<tr>";
html += "<td>"+user.PatientID+"</td>";
html += "<td>"+user.PatientName+"</td>";
html += "<td>"+user.IdentityCardNo+"</td>";
html += "<td>";
html +="<a href='#'>删除</a>";
html +="<a href='#'>修改</a>";
html += "</td>";
html += "</tr>";
}
//console.log(html);
$("body").innerHTML = html;
}
}
利用这个js代码取不到值,求大神讲解。

大海颜色的主页 大海颜色 | 初学一级 | 园豆:176
提问于:2019-01-08 14:26
< >
分享
最佳答案
1

你多设几个断点呗,看看哪里的值没有没有过来呀。

奖励园豆:5
xiaobaiskill | 小虾三级 |园豆:1087 | 2019-01-08 14:51

console了下,应该是取值的问题了 console.log(user)出来后取得值是拆开取得,且将{和,这些都去到了

大海颜色 | 园豆:176 (初学一级) | 2019-01-08 14:54

@大海颜色: 那就是你json写的有问题
,你将json 数据放到 https://www.json.cn/ 里面去,看能不能格式化

xiaobaiskill | 园豆:1087 (小虾三级) | 2019-01-08 14:58

@xiaobaiskill: 不能解析,就是转的json格式有问题吗,这是我在PHP中转的json语法

while($array = sqlsrv_fetch_array($result,SQLSRV_FETCH_ASSOC)){
    echo json_encode($array,JSON_UNESCAPED_UNICODE,true);
大海颜色 | 园豆:176 (初学一级) | 2019-01-08 15:02

@大海颜色: 你应该将这些的数据都放到array中才对,然后转成json 打印出去。

xiaobaiskill | 园豆:1087 (小虾三级) | 2019-01-08 15:09

@xiaobaiskill: 初学PHP,没太理解 能具体点吗

大海颜色 | 园豆:176 (初学一级) | 2019-01-08 15:19

@大海颜色:
while($array = sqlsrv_fetch_array($result,SQLSRV_FETCH_ASSOC)){
echo json_encode($array,JSON_UNESCAPED_UNICODE,true);

你的这个写法是 每取一次$array ,就将它转成了json,单个的话没有问题,一多的话,就会出现多个json数据,这样前端肯定是解析不了, 你要将这些统一放在一个array中 然后在json.

这样写

$data = [];
while($arr = sqlsrv_fetch_array($result,SQLSRV_FETCH_ASSOC)){
$data[] = $arr;
}

echo json_encode($data);

xiaobaiskill | 园豆:1087 (小虾三级) | 2019-01-08 15:26

@xiaobaiskill: 理解了 非常感谢您。

大海颜色 | 园豆:176 (初学一级) | 2019-01-08 15:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册