简体   繁体   中英

AJAX returning results plus the entire page contents (Using Javascript, PHP, MySQL but not JQuery)

I have an AJAX script running on my website that is supposed to update a dependent dropdown menu (a SELECT options menu) after a previous dropdown menu onchange event happens.

When I click on the first dropdown, the second dropdown does seem to be populated with the correct values from a MySQL database query. However, under my values I also seem to be pulling in the contents on the entire HTML webpage as a whole.

I'd like to know how to only bring in my values without loading the whole webpage again inside of my SELECT options menu.

My Javascript:

<script type="text/javascript">
function showUser(str)
{
if (str=="")
  {
  document.getElementById("txtHint").innerHTML="";
  return;
  } 
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp_aris=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp_aris=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp_aris.onreadystatechange=function()
  {
  if (xmlhttp_aris.readyState==4 && xmlhttp_aris.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp_aris.responseText;
    }
  }
xmlhttp_aris.open('GET','http://mywebdomain.com?ajax=true&q='+str,true);
xmlhttp_aris.send();
}
</script>

My PHP code:

   // begin my ghetto code
    if ($_GET['ajax'] == 'true') {

     $q = $_REQUEST["q"];


$con = mysqli_connect('localhost','db_user','db_pass','db_name');
if (!$con)
  {
  die('Could not connect: ' . mysqli_error($con));
  }



$sql='SELECT DISTINCT
employees.firstName,
employees.lastName
FROM
sales_reps
INNER JOIN employees ON sales_reps.employeeId = employees.employeeId
INNER JOIN sales_campaign ON sales_campaign.salesCampId = sales_reps.saleCampId
WHERE
sales_campaign.marketId = '.$q.' AND
employees.isactive = 1';

$result = mysqli_query($con,$sql);

while($row = mysqli_fetch_array($result))
  {
  echo '<option value="' . $row['firstName'] . '">'
            . htmlentities($row['firstName']) .' '.htmlentities($row['lastName']) .'</option>';
  }
mysqli_close($con);
}
// end my ghetto code

My code on the page with the dropdown menus:

<select id="frm-marketid" name="frm-marketid" onchange="showUser(this.value)">
<option value="">Choose a Market</option>
<option value="74">Annapolis</option>
<option value="61">Anne Arundel</option>
<option value="26">Aventura</option>
<option value="63">Baltimore</option>
</select>
<br/>     

<select id="txtHint"><b>Person info will be listed here.</b></select>  

just kill your script after you output your response for ajax

...  
  }
  mysqli_close($con);
  exit;
}
...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM