[英]Ajax with 2 drop down menus
我有2個下拉菜單。 用戶從每個選項中選擇一個選項后,我希望AJAX生成答案。 我可以使用以下示例通過一個下拉菜單來完成此操作:
http://www.w3schools.com/php/php_ajax_database.asp
我遵循了一些建議來嘗試修改2個下拉菜單的腳本,但是我沒有成功。 似乎數據沒有被發布到getuser.php頁面。
我的HTML代碼頁如下:
<?php
require('includes/application_top.php');
?>
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type="text/javascript">
function showUser(current_size, current_shoe)
{
if (str=="")
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getuser.php?size="+current_size"&shoe="current_shoe);
xmlhttp.send();
}
</script>
</head>
<body>
<?php
$query = "SELECT products_name, products_shoe_size FROM products_description WHERE language_id = 1 and products_shoe_size != '' ";
// Execute it, or return the error message if there's a problem.
$result = mysql_query($query) or die(mysql_error());
?>
<form>
<?php
$dropdown = "<select name='current_shoe' id='current_shoe'><option value=''>Select the model of your current shoes:</option>";
while($row = mysql_fetch_assoc($result)) {
$dropdown .= "\r\n<option value='{$row['products_shoe_size']}'>{$row['products_name']}</option>";
}
$dropdown .= "\r\n</select>";
echo $dropdown;
?>
<select name="current_size" id="current_size" onchange="showUser(Document.getElementById('current_size').value, Document.getElementById('current_shoe').value)">
<option value="">Select the size of your current shoes:</option>
<option value="2">2</option>
<option value="2.5">2.5</option>
<option value="3">3</option>
<option value="3.5">3.5</option>
<option value="4">4</option>
<option value="4.5">4.5</option>
<option value="5">5</option>
<option value="5.5">5.5</option>
<option value="6">6</option>
<option value="6.5">6.5</option>
<option value="7">7</option>
<option value="7.5">7.5</option>
<option value="8">8</option>
<option value="8.5">8.5</option>
<option value="9">9</option>
<option value="9.5">9.5</option>
<option value="10">10</option>
<option value="10.5">10.5</option>
<option value="11">11</option>
<option value="11.5">11.5</option>
<option value="12">12</option>
<option value="12.5">12.5</option>
<option value="13">13</option>
</select>
</form>
<br />
<div id="txtHint"><b>Sizing info will be listed here.</b></div>
</body>
</html>
<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>
我猜測可以在以下代碼行之一中找到問題:
function showUser(current_size, current_shoe)
xmlhttp.open("GET","getuser.php?size="+current_size"&shoe="current_shoe);
<select name="current_size" id="current_size" onchange="showUser(Document.getElementById('current_size').value, Document.getElementById('current_shoe').value)">
如果有人知道我在做什么錯,我將永遠感激不已。 我快沒頭發了。
首先,在更改事件處理程序中調用showUser
函數時,需要使用document.getElementById
,而不是Document.getElementById
(請注意,小寫的d
-JavaScript中的變量區分大小寫)。
其次,在哪里定義str
? 在showUser
函數中,您檢查它是否為空字符串,但如果未定義,則將引發ReferenceError
。
除此之外,您似乎永遠不會對xmlhttp
變量進行delcare,因此它將泄漏到全局范圍內,這是一種不好的做法。 您應該在范圍的頂部使用var
關鍵字聲明每個變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.