2013-03-16 84 views
1

我收集了一个国家和州的代码,其中我从选择标签中选择一个国家/地区名称,然后在下一个选择框中选择国家/地区下的所有状态显示。所有数据来自MySQL,并由jQuery,ajax处理。

我无法从控制器获得价值。为什么?

$data=$this->input->post('state',true) 

我的代码如下:CI模型

<?php 
/* File : ajax.php 
* Author : Manish Kumar Jangir 
*/ 
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 = "csc"; 


    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 countries"; 
       $this->_fields = array('id','country_name'); 
       break; 
      case 'state': 
       $this->_query = "SELECT * FROM states WHERE country_id=$id"; 
       $this->_fields = array('id','state_name'); 
       break; 
      case 'city': 
       $this->_query = "SELECT * FROM cities WHERE state_id=$id"; 
       $this->_fields = array('id','city_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; 

?> 

这是我的看法:

<html> 
<head> 
<title>Country State City Dependent Dropdown using Ajax</title> 
<script type="text/javascript" src="<?php echo base_url(); ?>js/jquery-1.5.2.min.js"></script> 
<style type="text/css"> 
body{ 
    font-family:arial; 
    color:#666; 
} 
form select{ 
    padding:5px; 
    border:1px solid #aaa; 
    border-radius:4px; 
    width:120px; 
} 

form label{ 
    font-size:12px; 
    font-weight:bold; 
} 
</style> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    load_options('','country'); 
}); 

function load_options(id,index){ 
    $("#loading").show(); 
    if(index=="state"){ 
     $("#city").html('<option value="">Select city</option>'); 
    } 
    $.ajax({ 
     url: "<?php echo base_url(); ?>index.php/welcome/includ.html?index="+index+"&id="+id, 
     complete: function(){$("#loading").hide();}, 
     success: function(data) { 
      $("#"+index).html(data); 
     } 
    }) 
} 
</script> 
</head> 
<body> 
<div style="width:800px; margin:auto;padding-top:100px;"> 
<h1>Country,State,City dynamic dependent dropdown using Ajax and Jquery</h1> 
<form action="<?php echo base_url(); ?>index.php/city_ajax/show_result" method="post"> 
     <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="<?php echo base_url(); ?>loader.gif" id="loading" align="absmiddle" style="display:none;"/> 
</form> 
</div> 

</body> 
</html> 

回答

0

SELECT语句:

country_id=$id应该country_id='" . $id . "'

state_id=$id应该state_id='" . $id . "'

+0

它们都用双引号,所以变量被解析。另外,将ID转换为整数将会是一件好事 – 2013-03-16 08:15:31

+0

是的,ajax.php是一个.php文件。你是否帮我转换为codeigniter模型和控制器文件。并且我正在编辑类型:“post”,但是我仍然无法获得$ data = $ this-> input-> post('country',true)控制器中的值。 $数据= $这个 - >输入 - >柱( '州',TRUE);我不明白我会在哪里改变country_id ='“。$ id。”'和state_id ='“。$ id。”'请帮助我(我是程序世界的新手) – user2176340 2013-03-16 14:38:21

1

至于你说的CI模式:

CI中你必须CI_Model延伸:为了使CI型其他明智

class Exam_model extends CI_Model {} 

它仅仅是一个.PHP文件

而且

这个

$data=$this->input->post('state',true); 

你试图评估参数,它需要一个型阿贾克斯作为POST

 url: "<?php echo base_url(); ?>index.php/welcome/includ.html?index="+index+"&id="+id, 
    complete: function(){$("#loading").hide();}, 
    type:"POST", // you have to mention post type here 
    success: function(data) { 
     $("#"+index).html(data); 
    } 

希望这将有助于!

+0

是的ajax.php是a。 PHP文件。你是否帮我转换为codeigniter模型和控制器文件。并且我正在编辑类型:“post”,但是我仍然无法获得$ data = $ this-> input-> post('country',true)控制器中的值。 $数据= $这个 - >输入 - >柱( '州',TRUE);请帮帮我 – user2176340 2013-03-16 14:27:52