2014-03-14 72 views
0

我想在我的codeigniter應用程序中實現AJAX,但我對如何將數據返回到視圖無能爲力。另外我不太確定我是否以正確的方式執行控制器。然而,AJAX調用是成功的,因爲我得到以下在Codeigniter中返回AJAX調用的結果

XHR finished loading: 

$.ajax({  
       type: "post", 
       cache:true, 
       url: "<?php echo site_url('getrates/index'); ?>",    
      }).done(function() { 
       $("#ajax-message").html("Success"); 
      }); 

這裏的消息控制器

class Getrates extends CI_Controller { 

public function __construct() 
{ 
    parent::__construct(); 
    $this->load->model('getrates'); 
} 

public function index() 
{ 
    $username = $sess_array['username']; 

    $data['rates'] = $this->getrates->index($username); 

    $this->load->view('dashboard', $data['rates']);   

} 

}

和模型

class Rates extends CI_Model { 


public function __construct() 
{ 
    parent::__construct(); 


} 

function index($user) { 

    $username = $user; 

    $sql = "SELECT * FROM tarrifs WHERE username = ? "; 

    $rates = $this->db->query($sql, array(1, $username)); 

    return $rates; 

} 

}

+0

取而代之的是,你應該打印你的數據。 –

+0

打印沒有幫助。 – Bazinga777

+0

'return $ this-> load-> view('dashboard,$ data ['rates']);'試試這個? –

回答

0

請放消息部分Ajax響應,嘗試這種方式

$.ajax({  
        type: "post", 
        cache:true, 
        url: "<?php echo site_url('getrates/index'); ?>",    
       }).done(function(data) { 
        $("#ajax-message").html(data); 
       }); 

在模型

function index($user) { 

    $username = $user; 

    $sql = "SELECT * FROM tarrifs WHERE username = {$username} "; 

    $rates = $this->db->query($sql); 

    return $rates->row_array(); // return single row in array 

} 

和控制器的請嘗試這種方式

public function index() 
{ 
    $username = $sess_array['username']; 

    $data['rates'] = $this->getrates->index($username); 
    // true parameter return view data 
    echo $this->load->view('dashboard', $data['rates'], true);  
    die(); 

} 
+0

我得到了一個解析錯誤,我想它與我的控制器或型號代碼 – Bazinga777

+0

@ Bazinga777,我已更新的代碼,希望它會有幫助 – Girish

0

我猜$就不會檢索任何來自您的控制器的數據,可能是因爲它指向錯誤的網址,或許您應該用它替換它:

url: "<?php echo site_url('getrates'); ?> 

提到如何codeigniter controllers works和,而不是在控制器嘗試加載一個觀點呼應,從模型的接收,而不是價值,所以你的$就不會檢索整個視圖控制器被渲染,即:

$username = $sess_array['username']; 
$data['rates'] = $this->getrates->index($username); 
echo json_encode($data['rates']) or return json_encode($data['rates']) 

哪一個工程,你是最好的,那麼改變你的佔位符中存在的某個頁面的ID,那麼現在加載器,而不是一個你的加載:

$("#a-different-page").html(data); 

至於你的模型我不確定它是否是不可信的直接命名爲「索引」的模型函數,但我會建議用一個更合適的命名它,如函數model_genrates(){}

希望它有幫助,歡呼!