2013-08-05 42 views
0

我查詢數據庫我在我的模型,像這樣笨 - 發送JSON腳本文件

function graphRate($userid, $courseid){ 
    $query = $this->db->get('tblGraph'); 
     return $query->result(); 
} 

我控制器從我的模型中獲取數據回來,我JSON編碼它像這樣

if($query = $this->rate_model->graphRate($userid, $courseid)){ 
    $data['graph_json'] = json_encode($query);  
} 
$this->load->view('graph', $data); 

而這就是返回我像這樣

[ 
{"id":"1","title":"myTitle","score":"16","date":"2013-08-02"}, 
{"id":"2","title":"myTitle2","score":"17","date":"2013-09-02"}, 
{"id":"3","title":"myTitle3","score":"18","date":"2013-10-02"} 
] 

一個JSON對象,在我看來,圖我加載一個js文件

<script type="text/javascript" src="script.js"></script> 

現在我想使用$數據從我的控制器發送到我的視圖,我的外部script.js使用 labels and data餵我的圖表。但是,如何將Json數據傳遞給我的外部script.js,以便我可以使用它?有關JSON數據

1件事,是不是有可能得到JSON數據的輸出作爲

{ 
"obj1":{"id":"1","title":"myTitle","score":"16","date":"2013-08-02"}, 
"obj2":{"id":"2","title":"myTitle2","score":"17","date":"2013-09-02"}, 
"obj3":{"id":"3","title":"myTitle3","score":"18","date":"2013-10-02"} 
} 

回答

0

這個問題不是Codeigniter問題,它是一個javascript scope/file inclusion/where-do-i-get-my-data-from問題。

我碰上這一切的時候,並使用這些解決方案:

  1. 命名我的PHP文件擴展名爲.php,並加載它們,就好像他們是意見。
  2. 只需將視圖文件中需要數據的腳本放在使用它的視圖文件中
  3. 在包含的js文件中使用ajax請求來控制器並獲取json數據。

我用#2最常(喜歡的事情,我想JS代碼正確的旁邊有它引用該表的數據表。

我用#1偶然,但儘量不要做,因爲它意味着某些.js文件位於我的webroot/js目錄中,並且有些位於應用程序/視圖目錄中,這使得我或任何其他想要支持此項目的人感到困惑。

#3有時是必要的......但我喜歡避免這種方法來儘量減少請求的數量,並試圖消除完全多餘的請求(這是)。

+0

由於這些信息,我明白了我必須做的! – mXX

0

您需要打印輸出JSON字符串到HTML生成的文件的結果。 但是你需要用一些腳本解析字符串。我會推薦你​​:http://api.jquery.com/jQuery.parseJSON/

對於第二個問題。有可能通過操作的方式:

$returnValue = json_encode(
    array (
    "obj1" => array("id"=>"1","title"=>"myTitle","score"=>"16","date"=>"2013-08-02"), 
    "obj2" => array("id"=>"2","title"=>"myTitle2","score"=>"17","date"=>"2013-09-02"), 
    "obj3" => array("id"=>"3","title"=>"myTitle3","score"=>"18","date"=>"2013-10-02"), 
) 
); 
+0

如何在script.js中獲取它? – mXX

+0

對於一個強化的答案,我認爲你必須詳細說明你的問題 – j4nSolo

+0

問題是,我不能讓我的外部腳本文件中使用我的json對象來使用它 – mXX

0

打印使用PHP等的輸出:

echo json_encode($query); 

然後,從客戶端(即JavaScript駐留)載荷JSON您使用PHP打印。這可以使用JQuery輕鬆完成。

像這樣:

$.get("test.php", function(data) { 
    alert("Data Loaded: " + data); 
}); 

你可以找到關於這個位置的詳細信息:http://api.jquery.com/jQuery.get/

現在,你需要分析這個數據,使JavaScript可以瞭解你有什麼作爲從服務器文本。爲此,您可以在上述示例中的「數據」對象上使用JSON.parse方法。一旦被解析,您就可以像使用JavaScript中的任何其他對象一樣使用對象。你可以在這裏找到更多關於JSON.parse的信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

我希望有幫助。

+0

也可以在腳本標記中包含php文件,如果不想使用ajax,或者只是將腳本標記中的json回顯爲javascript變量 – charlietfl

+0

我應該在哪裏回顯?從你的代碼中,我認爲你的意思是在控制器中回顯出來,但這不能在MVC中完成?這就是爲什麼我想我不明白如何加載我的外部jQuery文件 – mXX