1

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

最终目标是通过提供初步限制(选择您的城市)将选择选项从大约 200 个(日托中心)限制到大约 15 个

供参考“gem(ente)”是直辖市

剥离了我到目前为止的 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 中的 alert(gem) 部分有效,因此如果人们选择 minucupality 选项,它会显示在屏幕上,但 php 部分中的“echo”没有显示任何内容,所以我认为 ajax 看起来不在我的 php 中正确。

谁能告诉我我犯了什么愚蠢的错误,因为我无法弄清楚。提前致谢!

4

1 回答 1

1

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

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

上面的 URL 在“http:”之后似乎缺少“//”,我想您的浏览器将向“current_url/http:www...”发出请求,这当然是行不通的。

于 2013-02-07T18:45:05.357 回答