ajax发布到控制器并显示到自定义元素文件中

时间:2016-04-23 07:17:18

标签: ajax cakephp post controller

我需要从控制器文件中获取数据库中的数据并显示到元素文件和在inspect元素中显示的ajax值,并且当我在ajax中警告它显示该值将转到控制器时。

但问题是如何在控制器中回显或打印ajax值以从数据库中获取数据并将其显示到元素文件中?

如何在控制器功能中呈现自定义元素文件?

ajax脚本

<script>
 $('#categories .accordion .tablist .tablistitem').on('click', function () {
 event.preventDefault();
 $(".accordion li").removeClass("active");
 var  $li = $(this);
 $liid = $li.attr('id');
 $slug = $li.data('slug');
 $li.addClass("active");

 $('#wrapper').append('<span id="load">LOADING...</span>');
 $('#categories_info').show();

  $.ajax({
  type: 'POST',
  url: '/reviews/getsubcategories',
  data: {"selectid":$liid },
  dataType:"text",

  success: function(data, textStatus, xhr) {    
        alert(data);        
  },
  error: function(xhr, textStatus, error) {
        alert(textStatus);


  }
  });
  });



</script>

控制器功能

function getsubcategories()
{
    echo $selectid= $_POST['selectid'];

    return $selectid;

}

元素文件

$SubCategoryObj = cri('Reviews');
$selectid = $SubCategoryObj->getMainCategories();
echo $selectid; 

1 个答案:

答案 0 :(得分:1)

到目前为止,您所做的大部分都是正确的,但过去我刚刚在View/Reviews文件夹中创建了正常的视图。

在控制器中设置数据:

<强> /app/Controller/ReviewsController.php

public function getsubcategories()
{
    $this->layout = 'ajax';
    $data = /**code to get data**/

    $this->set('data', $data);

}

<强> /app/View/Reviews/getsubcategories.ctp

<?php echo json_encode($data); ?>

另一种选择是在上面创建相同的视图,但将其放在文件app/View/Ajax/json.ctp

然后在控制器内部,你在getsubcategories动作中调用的最后一件事是。

$this->render('Ajax/json');

根据我的经验,元素在视图中使用,而不是视图的替换