2

我只是一个新手。php,jquery and ajax我想从数据库中state and city name获取country name。我的数据库是这样的

CREATE TABLE IF NOT EXISTS `propertylocator` (
  `store_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `store_name` varchar(255) NOT NULL,
  `country_name` varchar(255) NOT NULL,
  `state_name` varchar(255) NOT NULL,
  `city_name` varchar(255) NOT NULL,
  `address` varchar(255) NOT NULL,
  `description` varchar(255) NOT NULL
  PRIMARY KEY (`store_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;


INSERT INTO `propertylocator` (`store_id`, `store_name`,  `country_name`,  `state_name`, `city_name`, `address`, `description`) VALUES
(1, 'My property1',  'India', 'uttar pradesh',  'Ghaziabad', 'Pilkhuwa, Uttar Pradesh 245304, India', 'this is demo test','this is dummy description'),
(2, 'My new Property',  'India', 'Maharashtra', 'Thane', 'Kudavali, Maharashtra 421401, India', 'test propery again', 'another dummy property'),
(3, 'Dummy store', 'United Arab Emirates', 'Sharjah',  'Halwan Suburb', 'Al Ghubaiba - Sharjah - United Arab Emirates', 'this is another dummy store','another text with dummy');

现在在这里我有 3 个下拉菜单,一个是country name,第二个是state name,另一个是city name。在countryname dropdown我得到所有的countryname. 但是我希望当我选择时,country name(lets say india here)我将获得州的下拉选项,uttar pradesh and Maharashtra因为它们的国名都是印度,当我从国家列表中选择阿拉伯联合酋长国时,我将获得所有国家名称的州名是United Arab Emirates in the database。以同样的方式申请cityname. 对于我所做的所有这些jQuery ajax事情

<label>Please Select Country</label></td><td>
  <div class="country">
   <select id="country" name="country" onchange="selectCountry();">
   <option value="Select">Select</option> 
   foreach($countrylist as $country) {
   <option value="$country['country_name]" id="$country['country_name]">echo $country['country_name]</option>
    }
  </select>

在功能上selectCountry()我的代码是这样的

function selectCountry() {
  var state = $('#country').val();
  console.log(state);
  $.ajax({
    type: "GET",
    url: "selectstate.php",
    data: { sta : state }
  }).done(function(html) {
    $('#state').html(html);
  })
}

在 selectstate.php 我有这样的查询

mysql_connect('localhost','root','') or die(mysql_error());
mysql_select_db(propertylocator) or die(mysql_error());
$sDB = new SelectDb();
$data = $sDB->selectStatesById($_GET['sta']);
foreach($data as $row)
{
    echo "<option value=" . $row->state . ">" . $row->name . "</option>";
}

但在这里我没有得到任何结果。它显示 404 not found 错误。所以有人可以告诉我这里有什么问题。

如果我的代码中有一些错误,请解决它。这样我才能正确理解代码。谢谢

更新 我检查了 url 路径并使其更清晰,以便可以跟踪问题。

4

2 回答 2

0

您可以在这里做的是在国家下拉值更改为 jquery ajax 时进行调用,以获取所选国家的所有状态并填写下拉列表并将其添加到您的 html 中。然后按照相同的过程调用所选州的城市。

于 2013-09-17T14:47:43.477 回答
0

url => 是定位文件 selectstate.php 的路径

function selectCountry() {
  var state = $('#country').val();
  console.log(state);
  $.ajax({
    type: "GET",
    url: url+"selectstate.php",
    data: { sta : state },
    success: function(html) {    
         $('#state').html(html);
        }
  });
}

.success()只有当您的网络服务器以 200 OK HTTP 标头响应时才会调用 - 基本上是在一切正常的情况下。

当延迟解决时,附加到的回调done()将被触发

这可能会帮助某人

于 2015-08-22T09:19:05.010 回答