Получение значения 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");
    });  
});
→ Ссылка