我一直试图找出一种基于初始文本从数据库中提取信息的正确方法
在html下拉菜单中选择.
这是我的代码:
<html>
<head>
</head>
<script src="testjs.js"></script>
<?PHP
$host = "";
$username = "";
$password = "";
$database = "";
MysqL_connect($host, $username, $password);
MysqL_select_db($database);
?>
<body>
<form>
<select name="users" onchange="showUser(this.value)">
<option value="">Select a person:</option>
<?PHP
$Query = MysqL_query("SELECT * FROM population");
while ($Rows = MysqL_fetch_array($Query))
{
$ID = $Rows['ID'];
$Pop = $Rows['Pop'];
$UniqueID = $Rows['uid'];
echo "<option value=\"$UniqueID\">$Pop</option>";
}
?>
</select>
</form>
<br>
<p>DB ID <input type="text" id="ids" name="ID" ></p>
<p>Population <input type="text" id="content" name="contet" ></p>
<p>Unique ID <input type="text" id="uid" name="uid" ></p>
<div id="Get@R_53_4045@ion"><b>Person info will be listed here.</b></div>
</body>
</html>
test.js包含:
function showUser(str)
{
if (str=="")
{
document.getElementById("Get@R_53_4045@ion").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("Get@R_53_4045@ion").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getuser.PHP?q="+str,true);
xmlhttp.send();
}
<?PHP
$q=$_GET["q"];
$con = MysqL_connect('', '', '');
if (!$con)
{
die('Could not connect: ' . MysqL_error());
}
MysqL_select_db("DropDown", $con);
$sql="SELECT * FROM population WHERE uid = '".$q."'";
$result = MysqL_query($sql);
while($row = MysqL_fetch_array($result))
{
$ID = $row['ID'];
$Pop = $row['Pop'];
$UID = $row['uid'];
?>
<script type="text/javascript">
var ids = '<?PHP echo json_encode($ID); ?>';
var content = '<?PHP echo json_encode($Pop); ?>';
var uid = '<?PHP echo json_encode($UID); ?>';
</script>
<?PHP }
MysqL_close($con);
?>
解决方法:
尝试改变
while($row = MysqL_fetch_array($result))
{
$ID = $row['ID'];
$Pop = $row['Pop'];
$UID = $row['uid'];
?>
<script type="text/javascript">
var ids = '<?PHP echo json_encode($ID); ?>';
var content = '<?PHP echo json_encode($Pop); ?>';
var uid = '<?PHP echo json_encode($UID); ?>';
</script>
<?PHP }
至
while($row = MysqL_fetch_array($result))
{
$ID = $row['ID'];
$Pop = $row['Pop'];
$UID = $row['uid'];
echo $ID . ' - ' . $Pop . ' - ' . $UID;
}
这应该工作.但是有更好的方法,因为它们会在您的客户端为您提供更多访问权限.例如发送一个JSON对象,一个简单的例子是:
$info = array();
while($row = MysqL_fetch_array($result))
{
$ID = $row['ID'];
$Pop = $row['Pop'];
$UID = $row['uid'];
$info[] = array( 'id' => $ID, 'pop' => $Pop, 'uid' => $UID );
}
echo json_encode($info);
你的JS就像这样:
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var data = JSON.parse(xmlhttp.responseText);
for(var i=0;i<data.length;i++)
{
document.getElementById("Get@R_53_4045@ion").innerHTML += data[i].id + ' - ' + data[i].pop + ' - ' + data[i].uid;
}
}
注意:如果您使用的浏览器不包含JSON库,则需要加载http://www.json.org/js.html.如果你想使用jQuery,你的AJAX / DOM更改也会变得简单得多
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。