2013-09-25 2 views
-1

Я получаю ошибку типа: e undefined в javascript-коде. Я пытаюсь заполнить выпадающий список, используя jquery, с данными, отправленными с сервера mysql.Ошибка типа: e не определено

вот 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); 
     } 

    }); 
}); 
}); 

Вот PHP-скрипт, который извлекает данные из базы данных MySQL

$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++; 
}  
+2

, на какую строку вы получаете ошибку? Также откуда вы получаете «индекс» и «значение»? –

+1

Я не вижу в вашем коде какой-либо части, которая могла бы вызвать эту ошибку очевидным образом. Либо вам не хватает ключевой строки, либо ошибка возникает в базовой структуре (jquery). – Christoph

+0

в данных, используйте данные: {doctor: doctorVal, day: dayValue} –

ответ

0

Это кажется вы не синтаксического анализа JSON, попробуйте следующее, обратите внимание на линия

data = JSON.parse(data);

Вы Mus t используйте 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); 
     } 

     }); 
+0

Он говорит о синтаксической ошибке JSON.parse: неожиданный символ – Ajit

+0

@ Ajit см. Ответ Рохана Кумара, вы кодируете json массив в PHP? –

+0

Да, да. Но все же показать ошибку разбора на JSON.parse. хотя вместо null в json callback есть значения. Strange – Ajit

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>'; 
}); 
+0

OP должен использовать $ .each() not $ (object) .each() –

+0

Спасибо! :). но журнал показывает [null, null, null ..so on] – Ajit

+0

@ A.Wolff Но я читал http://api.jquery.com/each/ и нет 'описания' для ** второго параметра в каждая функция ** –

Смежные вопросы