【发布时间】:2013-04-15 01:55:59
【问题描述】:
我有一个脚本,它使用 AJAX 连接到一个查询数据库并返回一些值的 PHP 脚本。代码如下:
<script>
function showUser(str)
{
if (str=="")
{
document.getElementById("txtHint").innerHTML="";
return;
}
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)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","ajaxphp.php?ID="+str,true);
xmlhttp.send();
}
</script>
<select id="users" name="users" onchange="showUser(this.value)">
<option value="">Select a person:</option>
<!-- PHP populates this dropdown box -->
</select>
<div id="txtHint"><b>Selected user info will be listed here.</b></div>
现在 txtHint div 将返回 ajaxphp.php 脚本打印的任何内容。然而,这不是很灵活。我想要做的是在 ajaxphp.php 中创建一个数组并使用 json_encode() 将结果传回。
我遇到的问题是我不知道如何获取原始脚本来获取结果,以便我可以用它们做有用的事情。现在我可以让它返回一个 JSON 数组,该数组将出现在 txtHint div 中,但我不知道如何让 PHP 实际读取该信息,以便我可以用它做点什么。
【问题讨论】:
-
如果您可以让您的 PHP 返回一个 JSON 数组,那么需要更改的是您的 javascript 函数,而不是 php。而不是
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;,您将拥有自己的代码来解析数组并用它做一些有用的事情。 -
关于另一个话题,我建议你看看现有的库,例如jQuery,它会为您处理很多事情,包括处理浏览器差异并将响应解析回 javascript 数组。