0

我正在创建一个多重下拉选择,作为表单的一部分。

这个想法是,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,因为它似乎非常有用。

但是,如果有人将我视为绝对的初学者,并让我了解我做错了什么,以及我能做些什么来解决这个问题,我会很高兴。

先感谢您。

4

1 回答 1

0

答案很简单——下次更彻底。

我发现我新创建的 cat_title.php 文件被上传到服务器,权限太低——我无法从浏览器中读取它们。

在filezilla中通过简单的右键单击修复,并更改了权限。

感谢任何花时间尝试为我解决此问题的人,对于给我带来的麻烦,我深表歉意。

于 2012-10-18T15:39:51.293 回答