簡體   English   中英

使用codeigniter的jQuery ajax調用

[英]jquery ajax call with codeigniter

我對ajax調用有問題。 這是我的代碼:

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

                })
            },
            error:function( result ){ console.log(["error", result]) }
        });

和my_controller代碼:

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

}

電話給我錯誤!

如果我手動轉到例如my_controller / jsonSubCategories / 5,它不會僅顯示json編碼的對象,也不會顯示我的鈎子產量布局的一部分。 問題是由布局引起的嗎? 在那種情況下,可以排除ajax調用的布局掛鈎嗎?

我不確定“掛鈎產量布局”是什么時候,但是是的,很容易將其排除在您的ajax請求之外。

只需在您的請求網址后放置一個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,直到所有緩沖區堆棧彈出為空。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM