У меня есть следующий код на 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?
Я очень смущен здесь …