【问题标题】:ajax post to controller and display into custom element fileajax 发布到控制器并显示到自定义元素文件中
【发布时间】:2016-04-23 07:17:18
【问题描述】:

我需要从控制器文件中从数据库中获取数据并显示到元素文件中,并在检查元素中显示 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; 

【问题讨论】:

  • 哪个版本的蛋糕?
  • @JasonJoslin cakephp 版本为 2.0.13

标签: ajax cakephp post controller


【解决方案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-&gt;render('Ajax/json');

根据我的经验,元素用于视图内部,而不是替代视图

【讨论】:

  • 哪个部分不工作?过去我肯定设法让这种方法为我工作。
  • function getsubcategories() { $data = "这是测试页面"; $this->set('data', $data);我创建了 getsubcategories.ctp 和
  • 在您的 ajax 方法中,您已将 dataType 设置为文本,但您的数据属性实际上是 json。将您的数据类型更改为 json。在您的 getsubcategories() 操作中写入debug($this-&gt;request-&gt;data);exit;。您是否收到您在警报中发布的 ID?我也喜欢使用console.log() 而不是alert () 来调试我的javascript。然后,无论数据类型如何,都可以在检查器工具的浏览器控制台选项卡中查看输出
  • 以及如何在元素文件或控制器中呈现 ReviewController.ctp?
  • 如果你能走得那么远,我不确定你是怎么看不到风景的。仔细检查您的文件夹结构和视图名称是否符合所有蛋糕约定,您应该没有问题。哦,还有一件事。应该设置$this-&gt;layout = 'ajax'。已更新我的答案以匹配
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-10
  • 1970-01-01
  • 1970-01-01
  • 2018-11-18
  • 2021-05-21
相关资源
最近更新 更多