Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用codeigniter的jquery ajax调用_Codeigniter_Jquery - Fatal编程技术网

使用codeigniter的jquery ajax调用

使用codeigniter的jquery ajax调用,codeigniter,jquery,Codeigniter,Jquery,我对ajax调用有问题。 这是我的密码: $.ajax({ url : "my_controller/jsonSubcategories/"+$(this).attr('id')+"", type:'POST', dataType: 'json', success:function( data ) { }) }, er

我对ajax调用有问题。 这是我的密码:

$.ajax({ 
            url : "my_controller/jsonSubcategories/"+$(this).attr('id')+"",
            type:'POST',
            dataType: 'json',
            success:function( data ) {

                })
            },
            error:function( result ){ console.log(["error", result]) }
        });
和我的控制器代码:

public function jsonSubcategories($idParent){
    header('Content-type: application/json');
    echo json_encode($this->Term->get_terms_byParent('subcategory',$idParent));

}
电话给我错了

例如,如果我手动转到我的_controller/jsonSubCategories/5,它不仅会显示json编码的对象,还会显示布局的一部分。
问题是由布局引起的?在这种情况下,是否可以排除ajax调用的布局挂钩

我不太确定“hooks-yield-layout”是什么时候,但是,是的,对于ajax请求,很容易将其排除在外

只需在请求URL后放置一个
GET
参数,如
format=json

$.ajax({ 
        url : "my_controller/jsonSubcategories/"+$(this).attr('id')+"?format=json",
在您的
hooks
文件中,在正在执行的函数开头的某个地方添加以下内容:

if ($_GET['format'] === 'json') return;
这基本上可以解决问题


通过
GET
参数指定输出格式是控制不同输出的常用方法。

当然。我还没有测试以下代码,但我认为它应该可以工作

public function jsonSubcategories($idParent){
    ob_get_clean();
    header('Content-type: application/json');
    echo json_encode($this->Term->get_terms_byParent('subcategory',$idParent));
}

基本上,如果php.ini中没有禁用输出缓冲,那么到目前为止已经回显的内容都存储在一个缓冲区中,这个缓冲区由ob_get_clean调用清除,您可以放心,在json内容之前不会回显任何内容。需要检查的另一件事是,检查钩子是否再次调用ob_start,因为这意味着您将必须ob_get_clean,直到所有缓冲区堆栈都被弹出为空。

如果使用
die(json_encode(…))而不是?