【问题标题】:ajax dropdown(country, state, city) [closed]ajax下拉(国家,州,城市)[关闭]
【发布时间】:2011-01-21 10:06:20
【问题描述】:

我需要一些 ajax 代码来做一些下拉功能。

我有三个值表,一个是国家,然后是州和城市。

我有三个下拉菜单来显示这些值

首先应该显示

选择国家

选择状态

选择城市

分别在那个下拉菜单中。

当我从第一个下拉菜单中选择美国时

在第二个下拉列表中,它必须显示美国的州。

当我从状态下拉列表中选择一个状态时再次

它必须在第三个下拉列表(城市)中显示该州的城市

我想用 ajax 来做这个。

任何人都可以有一个代码来做到这一点。

请帮帮我。

谢谢

【问题讨论】:

标签: php ajax


【解决方案1】:

这是一个非常古老的项目,所以我是通过 Javascript 而不是 jQuery 完成的;我希望这没问题。

<td>Type</td>
<td>
      <select  id="type" onChange="propertyType(this.value)" name="type">
                            <option value="">All</option>
                            <option value="homes">Homes</option>
                            <option value="plots">Plots</option>
                            <option value="commercial">Commercial</option>
      </select>
</td>

这是propertyType的js

function propertyType(str){
  if(str=='' || str=='plots'){
    document.getElementById("type_h").innerHTML=""; 
    document.getElementById("bed").innerHTML="";    
    }   
    else if(str=='commercial'){
    document.getElementById("bed").innerHTML="";    
          }
 else{
  document.getElementById("type_h").innerHTML="<img src='<?php echo $serverimageurl?>ajax-loader-small.gif' />";
    if(window.XMLHttpRequest){
    xmlhttp=new XMLHttpRequest();
 }
 else
{
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
    xmlhttp.onreadystatechange=function()
   {
    if(xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        document.getElementById("type_h").innerHTML=xmlhttp.responseText;
    }
   }
   xmlhttp.open("GET","ajax/propertytype.php?s="+str,true);
   xmlhttp.send();
   }
 }

这是propertytype.php

<?php
  $s=$_GET["s"];
  if($s=="homes"){
   ?>


 <select onchange="ajax_bed(this.value)" name="subtype" id="subtype" >
  <option value="">Type Of Houses</option>
  <option value="houses">Houses</option>
  <option value="flats">Flats</option>
  <option value="farmhouses">Farm Houses</option>
</select>

<?php
}
 if($s=="plots")
{
?>


 <?php
  }
  if($s=="commercial")
  {
  ?>
  <select name="subtype" id="subtype" >
   <option value="offices">Offices</option>
   <option value="shops">Shops</option>
   <option value="warehouses">Warehouses</option>
   <option value="factories">Factories</option>
   <option value="building">Buildings</option>
   <option value="other">Other</option>
  </select>
   <?php
  }
?>

这是选择卧室数量的ajax函数

function ajax_bed(str){
  document.getElementById("bed").innerHTML="<img src='<?php echo $serverimageurl?>ajax-loader-small.gif' />";
  if(window.XMLHttpRequest){
    xmlhttp=new XMLHttpRequest();
   }
  else
    {
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
    xmlhttp.onreadystatechange=function()
   {
    if(xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        document.getElementById("bed").innerHTML=xmlhttp.responseText;
    }
   }
   xmlhttp.open("GET","ajax/bedroomsselection.php?t="+str,true);
   xmlhttp.send();
 }

这是卧室选择.php

<?php
$t=$_GET["t"];
if($t=="houses"||$t=="flats"||$t=="farmhouses")
{
?>
 <select id="bed" name="bed">
   <option>None</option>
   <option>Single Bed</option>
   <option>Double Bed</option>
   <option>three Bed</option>
   <option>Four Bed</option>
   <option>Five Bed</option>
   <option>Six Bed</option>
   <option>Seven Bed</option>
   <option>Eight Bed</option>
   <option>Ten Bed</option>
   <option>More Than Ten Bed</option>
</select>


 <?php
 }
?>

我希望你现在已经有了这个想法,是时候自己编写代码了 干杯

【讨论】:

    【解决方案2】:

    1) 在db中创建3个表

    country table
    ==============
    countryId || countryName
    
    stateTable
    =============
    stateId || stateName || countryName
    
    city table
    =============
    cityId || cityName || stateId
    

    2) 现在创建 3 个网络服务 以json格式发送数据

    3) 现在在 html 页面上 创建三个选择框并在每个选择框上绑定 onchange 事件(城市选择除外),该事件将为 getStates Webservcie 发送 countryId,为 getCities Webservice 发送 stateId。并在状态选择框中绑定接收到的json状态和城市选择框中的城市

    【讨论】:

    • 嘿这个我知道,但我不知道这个的ajax函数方法
    • 对 xmlhttprequest 做一些谷歌搜索
    【解决方案3】:

    可以通过多种方式完成...

    1. 在第一个下拉菜单中添加更改事件;

    那么,您打算如何检索与第一个菜单相关的州以及与第二个菜单相关的城市?

    它们在数据库中吗?还是在一个js数组中(json?)?

    如果它们在数据库中,则使用 ajax 请求。否则,使用数组。

    这个胎面有很多插件和howto,google一下

    编辑:谁删除了plz-send-me-teh-code 标签?!

    【讨论】:

      猜你喜欢
      • 2011-01-07
      • 2017-08-27
      • 2021-02-06
      • 1970-01-01
      • 1970-01-01
      • 2017-10-20
      • 2011-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多