1

我从 MySQL 获取数据并回显 JSON 编码数据,如下所示:

$result = mysql_query ("SELECT * FROM order_list");
$myjsons = array();
$i = 0;
while ($row = mysql_fetch_assoc($result)) {
    $myjsons[$i] = json_encode(array($row));
    $i++;
}
echo json_encode($myjsons);

我有一个 Javascript 函数可以读取字符串并将其显示在文本框中:

if(ajaxRequest.readyState == 4){
$.post('userfind.php', function(data) {
    $("#txtfld").val(data);
    var arr =data.slice(1);
    var user_arr = arr.slice(0,-1);
    var json = user_arr,
    obj = JSON.parse(json);
    alert(obj.user_id);
    $("#resultTXT").val(obj.user_id);
    },'json'
    );}
}
ajaxRequest.open("POST", "userfind.php", true);
ajaxRequest.send(null); 
    }

问题是 txtfld 将字符串显示为 [{"user_id":"2790","fre.....tst":""}] 并且 resultTXT 由于两个 [ ] 而没有显示任何内容。我曾尝试使用 slice 删除它们,但似乎 slice 不适用于 JSON 字符串。我还能做些什么来删除 [ ] 以便 resultTXT 显示 user_id?

谢谢

4

1 回答 1

0
  1. 您将数组转换为 json 两次。
  2. php 不需要下一个数组元素的索引
  3. 我还会添加正确的标题“application/json”
  4. $row 已经是一个关联数组

$result = mysql_query ("SELECT * FROM order_list");
$myjsons = array();
while ($row = mysql_fetch_assoc($result)) {
 $myjsons[] = $row;
}
header('Content-type: application/json');
echo json_encode($myjsons);

这为您提供了正确格式化的 json

要在 javascript 中访问您的 json,您可以:

var obj=JSON.parse(json);

我假设你的 mysql 返回一个订单或用户列表 [{"user_id":1},{"user_id":2}] 所以如果你想访问第一个用户的 ID:

obj[0].user_id

但如果我误解了你可以发布更多关于你的 json 的信息。

于 2013-06-18T18:40:48.107 回答