2016-01-23 77 views
0

我想填充从另一个下拉列表中的值,所以这里是我的ajax代码。AJAX不显示结果

$(document).ready(function() { 
    $('#category').change(function() { 
    var category = $('#category :selected').val(); // <-- change this line 
    console.log(category); 
    $.ajax({ 
     type: "POST", 
     url: "<?php echo base_url('Ajax_test_controller/populateSubcategory'); ?>", 
     data: category, 
     dataType: 'json', 
     success: function(data) { 
      console.log(data); 
      $(data).each(function(){ 
       $("#subcategory").append($('<option>', { 
        value: this.id, 
        text: this.subcategory, 
       })); 
      }) 
     }, 
     error: function(errorw) { 
      alert("hi"); 
     } 
     }); 
    }); 
}); 

这是我的控制器

public function populateSubcategory(){ 
    $category_id = $this->input->post('category'); 
    $data = $this->ajax_test_model->getSubCategory($category_id); 
    echo json_encode($data);   
} 

这是我的模型

function getSubCategory($category_id){ 
    $this->db->select('id, subcategory'); 
    $this->db->from('subcategory'); 
    $this->db->where('category_id', $category_id); 
    $this->db->order_by("subcategory", "asc"); 
    $query = $this->db->get(); 
    return $query->result(); 
} 

这是我的看法

<div> 
    <div class="form-group"> 
     <label class="control-label">Category : </label> 
      <select name="category" id="category"> 
       <option value="0">Select Category</option> 
       <?php 
        if(is_array($category) || is_object($category)){ 
         foreach($category as $category_row){ 
          echo '<option value="'. $category_row->id .'">'. $category_row->category .'</option>'; 
         } 
        } 

       ?> 
      </select> 
     <label class="control-label">Subcategory : </label> 
     <select name="subcategory" id="subcategory"> 

     </select> 
    </div> 
</div> 

我不知道是否有错误在我的语法上,但每当我尝试将我的模型更改为

function getSubCategory($category_id){ 
    $cat = 1; 
    $this->db->select('id, subcategory'); 
    $this->db->from('subcategory'); 
    $this->db->where('category_id', $cat); 
    $this->db->order_by("subcategory", "asc"); 
    $query = $this->db->get(); 
    return $query->result(); 
} 

我得到了我想用这个模型得到的结果。但这只是为了检查我是否从我的查询中获得任何内容。

我的猜测是category_id没有传递给我的模型。但是,当我检查category_id的值,它等于1.

而我没有看到任何问题。感谢有关如何解决此问题的输入。谢谢。

回答

1

从jQuery文档,同时使用POST

数据选项可以包含形式键1 =值&键2 =值的查询字符串,或者形式{键的一个目的: 'value1',key2:'value2'}。如果使用后一种形式,则在发送数据之前使用jQuery.param()将数据转换为查询字符串。这个处理可以通过将processData设置为false来绕过。如果您希望将XML对象发送到服务器,则处理可能不受欢迎;在这种情况下,请将contentType选项从application/x-www-form-urlencoded更改为更合适的MIME类型。

在您的Ajax请求试试这个:

var category = $('#category :selected').val(); 

... 
... 
    type: "POST", 
    url: "<?php echo base_url('Ajax_test_controller/populateSubcategory'); ?>", 
    data: { 
    category:category 
    }, 
    //dataType: 'json' No real reason to use JSON here 
+0

哇感谢。这解决了我的问题。然而,我编辑了你的代码,因为它没有回显我想要的值,如果我把dataType:'json'放在注释中,它会导致错误。 –

+1

酷,无论如何,做Ajax请求总是检查浏览器检查器中的网络选项卡。在那里你可以检查请求(参数,数据等)和响应。 – adarshdec23