0

我有这个名为 ajax.php 的文件

<?php

    class AJAX {

        private $database = NULL;
        private $_query = NULL;
        private $_fields = array();
        public  $_index = NULL;
        const DB_HOST = "localhost";
        const DB_USER = "root";
        const DB_PASSWORD = "";
        const DB_NAME = "dd";


        public function __construct(){
            $this->db_connect();                    // Initiate Database connection
            $this->process_data();
        }

        /*
         *  Connect to database
        */
        private function db_connect(){
            $this->database = mysql_connect(self::DB_HOST,self::DB_USER,self::DB_PASSWORD);
            if($this->database){
                $db =  mysql_select_db(self::DB_NAME,$this->database);
            } else {
                echo mysql_error();die;
            }
        }

        private function process_data(){
            $this->_index = ($_REQUEST['index'])?$_REQUEST['index']:NULL;
            $id = ($_REQUEST['id'])?$_REQUEST['id']:NULL;
            switch($this->_index){
                case 'country':
                    $this->_query = "SELECT * FROM country GROUP BY Name";
                    $this->_fields = array('Code','Name');
                    break;
                case 'state':
                    $this->_query = "SELECT * FROM city WHERE CountryCode=$id";
                    $this->_fields = array('CountryCode','District');
                    break;
                case 'city':
                    $this->_query = "SELECT * FROM city WHERE CountryCode=$id";
                    $this->_fields = array('CountryCode','Name');
                    break;
                default:
                    break;
            }
            $this->show_result();
        }

        public function show_result(){
            echo '<option value="">Select '.$this->_index.'</option>';
            $query = @mysql_query($this->_query);
            while($result = @mysql_fetch_array($query)){
                $entity_id = $result[$this->_fields[0]];
                $enity_name = $result[$this->_fields[1]];
                echo "<option value='$entity_id'>$enity_name</option>";
            }
        }
    }

    $obj = new AJAX;

    ?>

和 index.html 与这个 js 脚本

和形式

<form>
    <label>Select Country</label>
    <select id="country" onchange="load_options(this.value,'state');">
        <option value="">Select country</option>
    </select>
    &nbsp;&nbsp;&nbsp;
    <label>Select State</label>
    <select id="state" onchange="load_options(this.value,'city');">
        <option value="">Select state</option>
    </select>
    &nbsp;&nbsp;&nbsp;
    <label>Select city</label>
    <select id="city">
        <option value="">Select City</option>
    </select>
    <img src="loader.gif" id="loading" align="absmiddle" style="display:none;"/>
</form>

国家选项是可见的,但是当我想选择国家时,它不是

我还有两张表国家和城市,在表城市中包括地区名称

4

1 回答 1

0

您应该使用 jQuery 来更轻松地实现 ajax 回调。如果不经常更改,您可以将数据缓存在客户端计算机上。

加载框后,您可以参考此主题 jQuery set selected value in option box

于 2013-03-15T03:31:01.243 回答