有时我需要像数组这样的数据,有时我需要与json相同的数据。
如果是ajax调用,你会在哪里进行检查,在控制器中还是在模型中或者...哪一个更好?
测试控制器中是否有ajax调用
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:
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;
}
}发布于 2011-01-17 04:20:56
控制器。该模型不关心数据需要如何表示给用户,只关心数据本身。
发布于 2011-01-17 04:34:46
引用自the Codeigniter tutorial explaining MVC
我认为你应该检查控制器(这与数据结构无关),看看它是否是一个ajax调用,因为jquery sets headers。如果是Ajax调用,则应该执行所需的json_encode转换。我认为你的代码应该看起来像下面的代码:
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;
}https://stackoverflow.com/questions/4707766
复制相似问题