Explanation
I have the following code in PHP that allows the user to select a name from a drop-down, then pass that name as a string over to a JavaScript function:
<?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]);
}
?>
The JavaScript function then reads the string:
function showUser(str) {
if (str !==".PM") {
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
}
}
$("#txtHint").load( "getuser.php?q="+str );
console.log(str);
}
and is supposed to place the output of getuser.php?q=John%Doe
into the txtHint DIV.
Issue
the str value does not APPEAR to be fully passing into the
$("#txtHint").load( "getuser.php?q="+str );
line of code.
When I look at my console, I see the following once the JavaScript function fires:
HR finished loading: GET "http://localhost/getuser.php?q=John"
John Doe
If I change the code to read just $("#txtHint").load( "getuser.php?q=");
, (without passing the str
variable,) it works fine and loads the getuser.php page into the DIV, (of course, without a name I don't get back any info, but it works...)
What am I doing wrong here? If the console.log(str)
is outputting John Doe
, then obviously the entire string is John Doe
, so why is my console outputting ?q=John
? and causing getuser.php not to load into the DIV?
I'm very confused here....