#javascript #php #json #ajax
#javascript #php #json #ajax
Вопрос:
Спокойной ночи, у меня вопрос с моим выпадающим меню: данные отображаются при выборе, пока все хорошо, но каждый раз, когда я отображаю меню, оно добавляет данные, но мне требуется, чтобы оно обновлялось только в случае каких-либо изменений в базе данных.
<div class="col-md-6">
<div class="form-group">
<label>Brands: <span class="text-danger">*</span></label>
<select id="BrandsEnabled" class="custom-select" required>
<option value="">Select</option>
</select>
</div>
</div>
скрипт, в котором я показываю данные в выпадающем списке
<script type="text/javascript">
$('#BrandsEnabled').click(function() {
$.ajax({
type: "GET",
url:"SelectBrandsEnabled.php",
dataType: "json",
success: function(data){
$.each(data,function(key, info) {
$("#BrandsEnabled").append('<option value=' info.id_brand '>' info.name_brand '</option>');
$('#BrandsEnabled').fadeIn(100);
setInterval('#BrandsEnabled', 100);
});
},
error: function(data) { alert('error'); }
});
</script>
это php, где я показываю данные в формате json
<?php
header('Content-type: application/json; charset=UTF-8');
require_once dirname( __DIR__ ) .'/sql.php';
$conn = new System();
$data=array();
$sqlBrandsEnabled=$conn->SelectProductsBrandEnabled();
$sqlBrandsEnabled->execute();
$sqlViewRow = $sqlBrandsEnabled->fetchAll();
foreach ($sqlViewRow as $ViewRow)
{
$option=array("id_brand"=>$ViewRow["id_brand"],"name_brand"=>$ViewRow["name_brand"]);
$data[]=$option;
}
echo json_encode($data);
?>
Ответ №1:
Просто удалите параметры из вашего выбора, прежде чем добавлять параметры к вашему выбору:
$('#BrandsEnabled').find('option').remove();
$('#BrandsEnabled').click(function() {
let value = $('#BrandsEnabled').val();
$.ajax({
type: "GET",
url:"https://reqres.in/api/users?page=2",
dataType: "json",
success: function(data){
$('#BrandsEnabled').find('option').remove();
$("#BrandsEnabled").append(`<option value='' disabled="disabled">Select</option>`);
$.each(data.data,function(key, info) {
$("#BrandsEnabled").append(`<option value=${info.id}>${info.first_name}</option>`);
});
$('#BrandsEnabled').val(value);
},
error: function(data) { alert('error'); }
});
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA 058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<div class="col-md-6">
<div class="form-group">
<label>Brands: <span class="text-danger">*</span></label>
<select id="BrandsEnabled" class="custom-select"></select>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js" integrity="sha512-bLT0Qm9VnAYZDflyKcBaQ2gg0hSYNQrJ8RilYldYQ1FxQYoCLtUjuuRuZo fjqhx/qtq/1itJ0C2ejDxltZVFg==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js" integrity="sha512-uto9mlQzrs59VwILcLiRYeLKPPbS/bT71da/OEBYEwcdNUk8jYIy D176RYoop1Da f9mvkYrmj5MCLZWEtQuA==" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5 76PVCmYl" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
Комментарии:
1. Спасибо, теперь я разберусь, как сохранить первый выбор в настройках. Другой вопрос заключается в том, что каждый раз, когда выбирается другой ответ, он возвращается к первому варианту.
2. Я обновил фрагмент и свой ответ. теперь проверьте
3. Спасибо, я проверил код, и он сработал для меня. Я просто выясню, как сохранить первый
<option value = ""> Select </option>
, а затем отобразить другие ответы.4. Спасибо за помощь.