将答案发送到服务器,并从服务器返回相关的数组以获取下一个输入选项

时间:2013-02-07 18:34:07

标签: php javascript html mysql ajax

我正在努力让以下工作:我想将一个下拉菜单问题的答案发送到php脚本,这反过来会让我从数据库中返回一个新的选择。然后,我想使用这个新选项来更改辅助下拉菜单中的可用输入选项

最终目标是通过提供初步限制(选择市政当局)将选择范围从大约200个(日托中心)限制到大约15个

供参考“gem(eente)”是市政当局

剥离了我到目前为止的javascript / ajax部分:

function loadXMLDoc(str) {
      var xmlhttp;
      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("gemeente").innerHTML=xmlhttp.responseText;
                 }
           }
      xmlhttp.open("POST","http:www.doenwatikkan.nl/jeroen/dynamic.php",true);
      xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
      xmlhttp.send(gem);
      alert(gem)
           }

php部分就是这个

<?php
include 'dbconnection.php';
$gem=$_POST["gem"];
$gennam=mysql_query("SELECT * FROM psz WHERE Gemeente='$gem'");
echo "ik ben in dit php script geweest";
$test="willekeurige string";
?>

和相关的html / php部分如下:

<select name="pszplaats" id="gemeente" onchange="fdisplay();loadXMLDoc(this.value)">
    <?php while($row=mysql_fetch_array($selectgem)){?>
    <option value="<?php echo $row['Gemeente']; ?>"><?php echo $row['Gemeente'];?>
    </option>
     <?php } ?>
    </select>
    <select name="psznaam" id="test" style="display:none">
    <?php while($row=mysql_fetch_array($gennam)){?>
    <option value="<?php echo $row['NaamPSZ']; ?>"><?php echo $row['NaamPSZ'];?>
    </option>
     <?php } ?>
    </select>

javascript中的警报(gem)部分可以工作,所以如果人们为微型选择一个选项,它会显示在屏幕上,但是php部分中的“echo”没有显示任何内容,所以我认为ajax没有好好看看我的php。

有人可以告诉我我犯了什么愚蠢的错误,因为我无法弄明白。 提前谢谢!

1 个答案:

答案 0 :(得分:1)

我刚刚在你后面的PHP脚本中发出了一个快速请求,它正在输出echo的内容。

xmlhttp.open("POST","http:www.doenwatikkan.nl/jeroen/dynamic.php",true);

上面的网址似乎在'http:'之后缺少'//',我想你的浏览器会向`current_url / http:www ...'发出请求,这当然不会有效