Получение значения select-а
Есть селект, который формируется на основе базы данных
<div><select name="selectoperator" id="selectoperatorid">
<?php
$hostname="localhost";
$username="root";
$password="";
$dbname="dbcall";
$selectoperatorsconn = mysqli_connect($hostname, $username, $password, $dbname);
if ($selectoperatorsconn === false) {
die("Ошибка: " . mysqli_connect_error());
}
else {
$selectoperatorsresult = mysqli_query( $selectoperatorsconn, "SELECT * FROM `operators`" );
if ($selectoperatorsresult) {
while($dbrowselectoperator = mysqli_fetch_assoc($selectoperatorsresult)){
echo '<option value=selectid'.$dbrowselectoperator['id'].'>'.$dbrowselectoperator['name'].'</option>';
}
}
}
?>
</select></div>
<button id="addnewuser">Добавить</button>
Значение select-а обрабатывается в js файле
$(document).ready(function() {
console.log('Inside addinfouser.js');
let addnewuser=document.querySelector('#addnewuser');
console.log(addnewuser);
// $('#addnewuser').on ('click', function (event) {
// event.preventDefault();
addnewuser.onclick= function(){
let userfio = document.getElementById('userfio').value;
let phonenumber = document.getElementById('phonenumber').value;
let selectoperatorid = document.getElementById('selectoperatorid').value;
/*
let userid=event.target.value;
let username=event.target.name;
*/
console.log(userfio);
console.log(phonenumber);
console.log(selectoperatorid);
let fdo = new FormData();
fdo.append('userfio', userfio);
fdo.append('phonenumber', phonenumber);
fdo.append('selectoperatorid', selectoperatorid);
if ((userfio!='') && (phonenumber!='') && /*(selectoperatorid!='')*/) {
console.log(document.getElementById('alllistusers').innerHTML);
/*
$.ajax ({
method: 'POST',
url: 'addinfooperator.php',
cache: false,
data: fdo,
processData: false,
contentType: false,
dataType: 'json',
success: function (data) {
console.log('check');
console.log(data);
let contentuserlisttable = document.getElementById('alllistoperators').innerHTML;
contentuserlisttable += '<tr class=operator'+data.phpoperatorid+'>';
contentuserlisttable += '<td>'+ data.phpoperatorname +'</td>';
contentuserlisttable += '<td>'+ data.phpratevalue +'</td>';
contentuserlisttable += '</tr>';
$('#alllistoperators').html(contentuserlisttable);
console.log(contentuserlisttable);
}
}
)*/
$.post("addinfouser.php", {userfio: userfio, phonenumber: phonenumber, selectoperatorid: selectoperatorid},
function(data) {
let contentuserlisttable = document.getElementById('alllistusers').innerHTML;
contentuserlisttable += '<tr class=userlist'+data.phpuserid+'>';
contentuserlisttable += '<td>'+ data.phpuserfio +'</td>';
contentuserlisttable += '<td>'+ data.phpphonenumber +'</td>';
contentuserlisttable += '<td>'+ data.selectoperatorname +'</td>';
contentuserlisttable += '</tr>';
$('#alllistusers').html(contentuserlisttable);
//document.getElementsByClassName('sumcostcalltableforinstance')[0].innerHTML=contenttotalcosttable;
console.log(contentuserlisttable);
}, "JSON"
);
}
}
}
)
Такое ощущение после дебага, что значение select-а в js получено неправильно
let selectoperatorid = document.getElementById('selectoperatorid').value;
Как получить строку, записанную в select-е (которая выбрана и была загружена из базы данных)? Мне нужно не номер строки option-а, а значения, которое отображается на экране.
Ответы (1 шт):
Автор решения: teran
→ Ссылка
вся ваша чудная портянка кода сокращается в следующее
$('#addnewuser').click(function(){
let data = {
userfio : $("#userfio").val(),
//userfio: $("#userfio :selected").text() -- если нужен текст, а не значение
phonenumber : $("#phonenumber").val(),
selectoperatorid: $("#selectoperatorid").val()
};
if(data.userfio == '' || data.phonenumber == ''){
return;
}
$.post("addinfouser.php", data, function(result) {
let tr = `<tr class="userlist...."><td>#{result.phpuserfio}</td>....</tr>`;
$(tr).appendTo("#alllistusers");
});
});