У меня есть следующий код на PHP, который позволяет пользователю выбрать имя из раскрывающегося списка, а затем передать это имя как строку в функцию JavaScript:
<?php include('./db.php'); $PM = mysqli_query($con, "SELECT DISTINCT PMName FROM report WHERE PMname <> '' ORDER BY PMName ASC"); ?> <select class="navbar-inverse" placeholder="PM Name" name="PMName" onchange="showUser(this.value)"> <?php while ($row = mysqli_fetch_row($PM)) { $selected = array_key_exists('PMName', $_POST) && $_POST['PMName'] == $row[0] ? ' selected' : ''; printf(" <option value='%s' %s>%s</option>\n", $row[0], $selected, $row[0]); } ?>
Затем функция JavaScript считывает строку:
function showUser(str) { if (str !==".PM") { if (str=="") { document.getElementById("txtHint").innerHTML=""; return; } } $("#txtHint").load( "getuser.php?q="+str ); console.log(str); }
и предполагается разместить вывод getuser.php?q=John%Doe
в txtHint DIV.
значение str не будет APPEAR полностью переходить в $("#txtHint").load( "getuser.php?q="+str );
строка кода.
Когда я смотрю на консоль, я вижу следующее после срабатывания функции JavaScript:
HR finished loading: GET "http://localhost/getuser.php?q=John" John Doe
Если я изменяю код, чтобы читать только $("#txtHint").load( "getuser.php?q=");
, (без передачи переменной str
), он отлично работает и загружает страницу getuser.php в DIV (конечно, без имени я не получаю никакой информации, но она работает …)
Что я здесь делаю неправильно? Если console.log(str)
выводит John Doe
, то, очевидно, вся строка – John Doe
, поэтому почему моя консоль выводит ?q=John
? и заставить getuser.php не загружаться в DIV?
Я очень смущен здесь …