2014-11-05 2 views
0

я пытаюсь получить подкатегории в соответствии с категориями по ajax.So я послал данные в контроллере с помощью метода Аякса ПОЛУЧИТЬ как сильфон кода в add.ctpCakePHP-2,4: подкатегории в соответствии с категориями по AJAX

$('document').ready(function(){ 
      $("#division").change(function() { 

         var value=$('#division').val(); 

          $.get("<?php echo Router::url(array('controller'=>'userStoreSelections','action'=>'add'));?>",{list:value},function(data){ 
        $('.districts').html(data); 
        alert(data); 
       }); 
      }); 
    }); 

В контроллере в методах поиска, когда я пишу следующий код, он работает нормально.

$madDistricts = $this->UserStoreSelection->MadDistricts->find('list',array(
      'conditions'=>array('mad_divisions_id'=>3) 
)); 

Но когда я даю значение, которое я послал на AJAX это не working.I написали как этот

$madDistricts = $this->UserStoreSelection->MadDistricts->find('list',array(
      'conditions'=>array('mad_divisions_id'=>"$list") 
)); 

Он показывает запрос, как этот

SELECT `MadDistricts`.`id`, `MadDistricts`.`name` FROM `store`.`mad_districts` AS `MadDistricts` WHERE `mad_divisions_id` IS NULL  

После выбора Категории ничего не меняют в запросе. Я тестировал аякс-код, нет проблем с отправкой значения.

Для более конкретно это код добавить действие

public function add() { 

     if(isset($this->request->query['list'])){ 
      $search = $this->request->query['list']; 
      echo $search; 
     } 
     else{ 
      $search = ''; 
     } 
     if ($this->request->is('post')) { 
      $this->UserStoreSelection->create(); 
      if ($this->UserStoreSelection->save($this->request->data)) { 
       $this->Session->setFlash(__('The user store selection has been saved.')); 
       return $this->redirect(array('action' => 'index')); 
      } else { 
       $this->Session->setFlash(__('The user store selection could not be saved. Please, try again.')); 
      } 
     } 
     $madDivisions = $this->UserStoreSelection->MadDivisions->find('list'); 

      $madDistricts = $this->UserStoreSelection->MadDistricts->find('list',array(
      'conditions'=>array('mad_divisions_id'=>"$list") 
     )); 
     $madAreas = $this->UserStoreSelection->MadAreas->find('list'); 
     $users = $this->UserStoreSelection->Users->find('list',array('fields' => array('id','username'))); 
     $madStores = $this->UserStoreSelection->MadStores->find('list',array('fields' => array('id','store_name'))); 
     $this->set(compact('madDivisions', 'madDistricts', 'madAreas', 'users','madStores')); 
    } 

ответ

0

Вы должны изменить свой код файла add.ctp вроде как:

$('document').ready(function() { 
$("#division").change(function() { 
    var value = $(this).val(); 
    $.ajax({ 
     url: '<?php echo Router::url('/',true);?>userStoreSelections/subcategories', 
     type: "POST", 
     dataType: 'json', 
     data: 'category=' + id, 
     success: function (res) { 
      var html = '<option>Sub Category</option>'; 
      if (res.flage == true) { 
       html = res.data; 
      } 
      $('.districts').html(html); 
     } 
    }); 
}); 

});

Чем создать функцию в ваших userStoreSelections для прибудут подкатегории как

public function subcategories() { 

    $response = array('flage' => false); 

    $madDistricts = $this->UserStoreSelection->MadDistricts->find('list', array(
     'conditions' => array('mad_divisions_id' => $this->request->data['category']) 
    )); 

    $options = "<option>Subcategories</option>"; 
    if ($states) { 
     $response['flage'] = true; 
     foreach ($madDistricts as $id => $name) { 
      $options .= "<option value='" . $id . "'>" . $name . "</option>"; 
     } 
     $response['data'] = $options; 
    } 
    echo json_encode($response); 
    exit; 
} 
+0

Но что проблема в моем коде? Я использовал только jquery ajax здесь. –

+0

Пожалуйста, разместите свою полную функцию, чтобы я мог найти, в чем проблема. –

+0

Я уже редактировал свой вопрос, смотрите. –

 Смежные вопросы

  • Нет связанных вопросов^_^