У меня есть сценарий, который извлекает параметры из скрипта php для заполнения выпадающего списка на главной странице.
Здесь javascript
<script>
//# this script uses jquery and ajax it is used to set the values in
$(document).ready(function(){
//# the time field whenever a day is selected.
$("#day").change(function() {
var day=$("#day").val();
var doctor=$("#doctor").val();
$.ajax({
type:"post",
url:"time.php",
data:"day="+day+"&doctor="+doctor,
dataType : 'json'
success: function(data) {
//# $("#time").html(data);
var option = '';
$.each(data.d, function(index, value) {
option += '<option>' + value.timing + '</option>';
});
$('#timing').html(option);
}
});
});
});
</script>
Здесь php-скрипт, который получает данные из базы данных.
<?php
$con = mysqli_connect("localhost","clinic","myclinic","myclinic");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$doctor = $_POST['doctor'];
$day = $_POST['day'];
$query = "SELECT * FROM schedule WHERE doctor='" .$doctor."'AND day='" .$day. "'";
$result = mysqli_query($con, $query);
//$res = array();
echo "<select name='timing' id='timing'>";
//Initialize the variable which passes over the array key values
$i = 0;
//Fetches an associative array of the row
$row = mysqli_fetch_assoc($result);
// Fetches an array of keys for the row.
$index = array_keys($row);
while($row[$index[$i]] != NULL)
{
if($row[$index[$i]] == 1) {
//array_push($res, $index[$i]);
json_encode($index[$i]);
echo "<option value='" . $index[$i]."'>" . $index[$i] . "</option>";
}
$i++;
}
echo json_encode($res);
echo "</select>";
?>
Это не работает. Я получаю сообщение об ошибке с консоли, пропуская "}" в javasrcipt на линии
$("#day").change(function(){
Я тоже не могу найти ошибку.
Вам нужно добавить запятую на строку выше той, которая вызывает ошибку:
dataType : 'json',
Трудно сказать, где проблема, потому что вы смешиваете вещи вместе. На стороне Javascript вы ожидаете JSON, но на стороне PHP вы создаете HTML.
Используйте JSON для отправки данных между сервером и браузером. Убедитесь, что вы действительно генерируете действительный JSON и только JSON.
Эта строка ничего не делает (функция возвращает значение, но не изменяет ее)
json_encode($index[$i]);
Эта строка не имеет смысла - переменная $ res не инициализируется;
echo json_encode($res);
Это потому, что у вас нет запятой на линии над ней...