无法尝试使用php返回的json数组填充下拉菜单

时间:2015-09-26 17:14:20

标签: php json ajax

当我尝试使用ajax填充下拉菜单时,我无法在下拉菜单中获得所需的值。

你可以告诉我错误在哪里吗?从accno返回的phpjson数组,将在下拉菜单中填充。

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);

?>

1 个答案:

答案 0 :(得分:0)

问题是,我想,你认为你的javascript中有同名的php变量$source。这是个错误。 PHP对javascript一无所知。

来自服务器的响应来自responseText对象的xmlhttp属性。因此,您应该解析xmlhttp.responseText而不是$source

var myarray = JSON.parse(xmlhttp.responseText);

要查看获得的内容,可以使用alertconsole.log与开发人员控制台。