当我尝试使用ajax
填充下拉菜单时,我无法在下拉菜单中获得所需的值。
accno
返回的php
是json
数组,将在下拉菜单中填充。
function showACC(str)
{
if (str == "")
{
return;
} else {
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 doc = window.document.createElement("doc");
var myarray = JSON.parse($source);
var dropdown = document.getElementById("DropdownList");
for (var i = 0; i < myArray.length; ++i) {
dropdown[dropdown.length] = new Option(myArray[i], myArray[i]);
}
}
}
xmlhttp.open("GET","data.php?q="+str,true);
xmlhttp.send();
}
}}
<?php
/*
Connecting to the database
*/
$dbuser = 'root';
$dbpass = 'neel';
$host = 'localhost';
$db = 'library';
mysql_connect($host, $dbuser, $dbpass) or die(mysql_error());
mysql_select_db($db) or die(mysql_error());
/*
Executing SQL query
*/
$queryResult = mysql_query('SELECT acc_no FROM lib_iss_ret where stu_id="07751a1035"') or die(mysql_error());
$source = array();
/*
Building the source string
*/
while ($row = mysql_fetch_array($queryResult)) {
array_push($source, $row['acc_no']);
}
/*
Printing the source string
*/
echo json_encode($source);
?>
答案 0 :(得分:0)
问题是,我想,你认为你的javascript中有同名的php变量$source
。这是个错误。 PHP对javascript一无所知。
来自服务器的响应来自responseText
对象的xmlhttp
属性。因此,您应该解析xmlhttp.responseText
而不是$source
:
var myarray = JSON.parse(xmlhttp.responseText);
要查看获得的内容,可以使用alert
或console.log
与开发人员控制台。