首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OOP MVC -模型还是控制器来检查返回的数据类型?

OOP MVC -模型还是控制器来检查返回的数据类型?
EN

Stack Overflow用户
提问于 2011-01-17 04:13:54
回答 2查看 616关注 0票数 0

有时我需要像数组这样的数据,有时我需要与json相同的数据。

如果是ajax调用,你会在哪里进行检查,在控制器中还是在模型中或者...哪一个更好?

测试控制器中是否有ajax调用

代码语言:javascript
运行
复制
function my_controller(){
    //getdata from model
    $data=$this->my_model();
    if(THIS_IS_AJAX_CALL){
        echo json_encode($data);
    }else{
        return $data;
    }
}

function my_model(){
    //get the data from db
    return $data;
}

将类型作为参数传递给model:

代码语言:javascript
运行
复制
function my_controller(){
    if(THIS_IS_AJAX_CALL){
        return $this->my_model('json');
    }else{
        return $this->my_model();
    }
}

function my_model($type=''){
    //get the data from db
    if($type='json'){
        return json_encode($data);
    }else{
        return $data;
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-17 04:20:56

控制器。该模型不关心数据需要如何表示给用户,只关心数据本身。

票数 1
EN

Stack Overflow用户

发布于 2011-01-17 04:34:46

引用自the Codeigniter tutorial explaining MVC

  • 模型表示您的数据结构。通常,您的模型类将包含帮助您在数据库中检索、插入和更新信息的函数。
  • 视图是呈现给用户的信息。视图通常是网页,但在CodeIgniter中,视图也可以是页面片段,如页眉或页脚。它也可以是RSS页面,或任何其他类型的“页面”。
  • 控制器充当模型、视图和处理
  • 请求并生成网页所需的任何其他资源之间的中介。

我认为你应该检查控制器(这与数据结构无关),看看它是否是一个ajax调用,因为jquery sets headers。如果是Ajax调用,则应该执行所需的json_encode转换。我认为你的代码应该看起来像下面的代码:

代码语言:javascript
运行
复制
function is_xhr() {
  return @ $_SERVER[ 'HTTP_X_REQUESTED_WITH' ] === 'XMLHttpRequest';
}

$data = /* get from model */
if( is_xhr() ){
  // Not explicitly needed, but we like being accurate, right?:
  header('Content-type: application/json');

  echo json_encode($data);
  exit(); // We don't need to render anything else
} else {
  echo $data;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4707766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档