[英]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.