0

我收到一个类型错误:javascript 代码上的 e 未定义。我正在尝试使用 jquery 填充从 mysql 服务器发送的数据的下拉列表。

这是javascript代码

$(document).ready(function(){// This script uses jquery and ajax it is used to set the values in
$("#day").change(function(){// the time field whenever a day is selected.
    var day=$("#day").val();
    var doctor=$("#doctor").val();
    $.ajax({
        type:"post",
        url:"time.php",
        data:"day="+day+"&doctor="+doctor,
        dataType : 'json',
        success:function(data){
            var option = '';
            $.each(data.d, function(index, value) {
                console.log(data.d);
                option += '<option>' + value.arr + '</option>';
            });
            $('#timing').html(option);
        }

    });
});
});

这是从 mysql 数据库中获取数据的 php 脚本

$doctor = $_POST['doctor'];
$day = $_POST['day'];
$query="SELECT * FROM schedule WHERE doctor='$doctor' AND day='$day'";
$arr = array();
$result = mysqli_query($con, $query);
$i = 0; 
//Initialize the variable which passes over the array key values
$row = mysqli_fetch_assoc($result);    //Fetches an associative array of the row
$index = array_keys($row);             // Fetches an array of keys for the row.
while($row[$index[$i]] != NULL)
{
    if($row[$index[$i]] == 1) {
        //$res = $index[$i];
        //echo json_encode($res);
        array_push($arr, $index[$res]);
    }
    $i++;
}       
4

2 回答 2

4

您没有以正确的方式使用each()替换该行

$.each(data.d, function(index, value) {

经过

if(data.d)
{
    $(data.d).each(function(index, value) {
       // your code

同样php中 使用json_encode()您的数据设为json

} // end of while
echo json_encode($arr);

更新代码,在您的php 脚本中尝试,

$i = 0; 
//Initialize the variable which passes over the array key values
while($row = mysqli_fetch_assoc($result))
{
    $arr['d'][$i]=$row['doctor'];
    // you can add more fields in array like above
    $i++;
}
echo json_encode($arr);
return;

您的Javascript中,它将在阅读 DOC jquery.each()后工作

 $.each(data.d, function(index, value) {
      option += '<option>' + value+ '</option>';
 });
于 2013-09-25T07:31:59.900 回答
0

看来您没有解析 JSON,请尝试以下操作,注意该行

data = JSON.parse(data);

您必须在数据对象上使用 JSON.parse,否则 JavaScript 会将其视为字符串。

$(document).ready(function(){// This script uses jquery and ajax it is used to set the values in
$("#day").change(function(){// the time field whenever a day is selected.
  var day=$("#day").val();
  var doctor=$("#doctor").val();

  $.ajax({
      type:"post",
      url:"time.php",
      data:"day="+day+"&doctor="+doctor,
      dataType : 'json',
      success:function(data){
      var option = '';

      data = JSON.parse(data);

      $.each(data.d, function(index, value) {

      console.log(data.d);
          option += '<option>' + value.arr + '</option>';

         });

     $('#timing').html(option);
        }

       });
于 2013-09-25T07:31:58.270 回答