我正在创建一个多重下拉选择,作为表单的一部分。
这个想法是,6 个选择级别最终将导致一个值插入到表单字段中。
表单标题中的 javascript
<script type="text/javascript">
function getInfo(str)
{
if (str=="")
{
document.getElementById("catTitle").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("catTitle").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","cat_title.php?q="+str,true);
xmlhttp.send();
}
</script>
我为每个选择创建了 1 个脚本——我是 javascript/jquery 的新手,知道的很少,我还没有看到一种简化的方法,但是,使用一个脚本并多次调用——结果,我调用 getInfo( ) 用于第一个,getInfo2() 用于第二个,getInfo3() 用于第三个,依此类推。
在文件的正文中,我开始了一个表格。在表单内,我有我的选择框——并且想使用 onchange='function()' 来调用每个值,并将导致将值插入到
这是现在的选择。
Select Category : <br>
<select name="level1" id="level1" onchange="getInfo(this.value)">
<option></option>
<?
$sql="SELECT * FROM Ebay_Category WHERE Level='1' ORDER BY Category";
$results=mysql_query($sql);
while($row=mysql_fetch_array($results)){
if($row['CategoryID']!=$lastrowid){
echo "<option value='".$row['CategoryID']."' >".$row['Category']."</option>";
$lastrowid=$row['CategoryID'];
}
}
?>
</select>
<br>
<span id="catTitle"></span><br>
<span id="catTitle2"></span><br>
<span id="catTitle3"></span><br>
<br><br>
这是我的第一个 cat_title.php 文件中的代码,每个都更改下一个创建的选择框上的 id;(我还利用每次通话来跟踪会话时间,所以我可以让它在 10 分钟后超时。——我也养成了收集用户名的习惯,所以我以后可以很容易地添加到日志文件中,虽然我看不到将日志文件添加到简单的选择中 - 我只是想解释一下,以防这有助于我达到我不知道的调用限制)
<?php
include "signup/include/session.php";
include "signup/include/z_db.php";// database connection details stored here
$gap=10; // change this to change the time in minutes, This is the time for which active users are collected.
$tm=date ("Y-m-d H:i:s", mktime (date("H"),date("i")-$gap,date("s"),date("m"),date("d"),date("Y")));
$ListerID=$_SESSION['userid'];
mysql_connect("$servername", "$dbusername", "$dbpassword")or die("cannot connect");
mysql_select_db("$dbname")or die("cannot select DB");
$userInfo=(mysql_fetch_array(mysql_query("SELECT * FROM plus_signup WHERE userid='$ListerID'")));
$UserLevel=$userInfo['users_level'];
//check to see if leaf, if yes - echo result only
$vx=$_GET["q"];
$LeafCheckSQL="SELECT * FROM Ebay_Category WHERE ParentID='".$vx."' ORDER BY Category";
$result=mysql_query($LeafCheckSQL);
echo "<select id=\"lev2\" onchange=\"getInfo2(this.value)\">";
while ($row=mysql_fetch_array($result)){
echo "<option value='".$row['CategoryID']."'>".$row['Category']."</option>";
}
echo "</select>";
//}
?>
用于构建第二个下拉菜单,一旦被选中,就可以构建第三个下拉菜单。
我添加了 alert('messages') 来帮助我跟踪问题,并且在第三个下拉列表中,当我调用 getInfo(str) 调用时——它会逐步完成整个过程,但需要的 xmlhttp.readyState为 4,而需要为 200 的 xmlhttp.status,首先分别显示为 2:500,然后似乎是对 onreadystatechange 的重试,它变为 4:500 --
这是另一个奇怪的事情,如果它是一个限制 - 为什么我可以使用表单选择 1 2 就好了,每次调用 4:200,即使在第 3 次失败之后也是如此。我很迷茫。
我正在添加尽可能多的信息,在这个项目之后,我将认真研究学习 jquery,因为它似乎非常有用。
但是,如果有人将我视为绝对的初学者,并让我了解我做错了什么,以及我能做些什么来解决这个问题,我会很高兴。
先感谢您。