这是我编写的用于使用AJAX从数据库中获取数据的脚本。
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function loadJSON()
{
var data_file = "http://www.idesigns.com.pk/comingsoon/test/connect.php";
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var jsonObj = xmlhttp.responseText;
document.getElementById("firstname").innerHTML = jsonObj.firstname;
document.getElementById("lastname").innerHTML = jsonObj.lastname;
document.getElementById("ajaxDiv").innerHTML=jsonObj;
}
}
xmlhttp.open("GET", data_file, true);
xmlhttp.send();
}
</script>
<title>JSON</title>
</head>
<body>
<h1>User Details</h1>
<p id="firstname">John</p>
<p id="lastname">Doe</p>
<div id='ajaxDiv'>Your result will display here</div>
<button type="button" onclick="loadJSON()">Update Details </button>
</body>
</html>
数据库连接中没有错误。
提取和/或回传JSON对象时没有错误。
但是,当我尝试使用innerHTML显示数据时,我得到的是未定义的以下输出,而不是从对象中获取名字和姓氏。
输出:
undefined
undefined
{"id":"1","firstname":"Bruce","lastname":"Lee"}
我不知道发生了什么事。那么,如果有人可以提供帮助?请
最佳答案
您正在尝试使用字符串,就好像它是反序列化的对象一样。该字符串没有名为firstname
和lastname
的属性。
您需要将字符串解码为一个对象:
var jsonObj = JSON.parse(xmlhttp.responseText);
然后,使用
jsonObj.firstname
等的代码将起作用。 (请注意,此时,它不是一个“ JSON对象”。它只是一个对象。JSON是一种文本表示法;一旦解析了文本,就不再使用JSON。)