Константин ЕфименкоГуру (3721)
5 лет назад
Зачем? В этом нет никакой необходимости (и никогда не было). В любом случае, я уже давно сам разобрался.
P.S.: То что я дополнил, это было необходимо, чтобы сделать простой вариант (без критериев).
Чтобы сделать по нормальному, нужно явно указать массив данных:
$data[] = $Kss.' '.$Nms;
PHP:
function SpcFlt() {
Заключить фильтрацию в if (условие) {Фильтр} else {Другой фильтр}
echo json_encode($data, JSON_UNESCAPED_UNICODE);
}
jQuery:
$.post("ajax_sim.php", "spc-flt=" + NumPr, function (data) {
$("#Nms").html(''); //Чтобы единожды очистить список (перед фильтрацией), а не каждый раз
for (var i = 0; i < data.length; i++) {
var counter = data[i];
$('#Nms').append('');
}
}, "json"); //Можно явно указать ожидаемый тип данных
<input type="text" class="Or-spc clear" id="myInput" list="Nms" />
<datalist id="Nms"></datalist>
jQuery:
$('.Or-spc').on('focus', function() {
var NumPr = $('.active').attr('data-kp');
$.post("ajax_sim.php", "spc-flt=" + NumPr, function (data) {
for (var i = 0; i < data.length; i++) {
var counter = data[i];
$('#Nms').html('<option value="'+data+'"></option>');
}
}, "json");
});
PHP:
if (isset($_POST['spc-flt'])) {
SpcFlt();
}
function SpcFlt() {
include('connect.php');
$NumPr = $_POST['spc-flt'];
$sql = ("SELECT ...FROM [MyDB] ORDER BY ...");
$stmt = sqlsrv_query($conn, $sql);
while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
$Kss = $row['...'];
$Nms = $row['...'];
$data = $Kss.' '.$Nms;
echo json_encode($data, JSON_UNESCAPED_UNICODE);
}
}
Мне необходимо динамически, в зависимости от критерия, формировать разный список в datalist. Причём число, которое я отправляю на php, как раз и отвечает за этот критерий.
Сейчас в datalist нечего не приходит, но ответ от ajax запроса есть. Если оставить как есть, но убрать json, то в datalist приходит весь список одной строкой. До сих пор, эта схема была идеальна для вывода в многострочный select, но для вывода в input + datalist явно не годится.
Как правильно вывести? Нужен ли тут json или это делается без него? Распишите свой ответ.