【问题标题】:send answer to server, and retrieve relevant array from server back for next input options将答案发送到服务器,并从服务器检索相关数组以获取下一个输入选项
【发布时间】:2013-02-07 18:34:07
【问题描述】:

我正在尝试执行以下操作:我想将下拉菜单问题的答案发送到 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。

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

【问题讨论】:

  • 是否进入成功回调?即您在document.getElementById("gemeente").innerHTML 中看到任何回复吗?

标签: php javascript html mysql ajax


【解决方案1】:

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

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

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

【讨论】:

  • 嗯,这似乎已经修复了一部分。仍然看不到回声,但现在第一个下拉菜单的输入在选择后消失了。这是因为浏览器只重新加载该选择,而不是第二个选择?
  • 这里有更多基本问题需要解决,可能超出了单个问题的范围。您现在正在用字符串替换第一个选择的内容(这当然不起作用) - 您可能的意思是更改第二个下拉列表(如果您查看自己的来源,则使用不同的 id ) 并在后台从 PHP 脚本返回一系列
  • 是的,这正是我想要做的。我离那个目标还有多远?实际上,我什至没有尝试更改第一个选择的输入,只是第二个选择。这是否意味着特定的 javascript 函数只能应用于更改特定输入字段的内容?
  • 'document.getElementById("gemeente").innerHTML=xmlhttp.responseText;' - 此行显式更改了 id 为“gemeente”的元素,这是第一个选择。当然要更改另一个,您需要根据需要替换 id。
  • 好吧,我想我对整个过程有了更多了解。现在,如果我想以可用的格式而不是简单的文本从服务器返回一个新数组,这可能吗?或者我应该为这样的问题创建一个新线程?由于我是这里的新手,我不知道如何解决这些问题;)
猜你喜欢
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-03
  • 2015-11-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多