В вашем коде есть несколько проблем.
Первое: попытка использовать неопределенную переменную $data
, вы должны были инициализировать ее пустой строкой до цикла while
: $data = '';
, в противном случае это может отправить уведомление PHP с ответом JSON в зависимости от значений display_errors
и error_reporting
настроек.
Второе: , как сказал @shamittomar, $data
должен быть массивом, а json_encode()
должен вызываться только один раз для всего массива. На данный момент вы отправляете несколько объектов JSON, объединенных в одну строку, что неверно.
Третье: значение параметра функции user
в JavaScript на самом деле представляет собой index массива data
, а не value , но даже если user
будет значением, это будет объект JavaScript со свойствами user
и pass
, а не string .
Результирующий код должен быть (только измененные части):
PHP
$data = array();
while ($row = mysql_fetch_array($test, true)) {
$data[] = $row;
};
echo json_encode($data);
JavaScript
$.each(data, function(i, user) {
$('#box').append(
$('<option></option>').html(user.user)
);
});