0

我像这样查询我的模型的数据库

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);

那就是像这样返回我一个json对象

[
 {"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"}
]

在我的视图图中,我正在加载一个 js 文件

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

现在我想使用从我的控制器发送到我的视图的 $data,到我的外部 script.js 用作标签和数据来提供我的图表。但是如何将 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"}
}
4

3 回答 3

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"),
  )
);
于 2013-08-05T14:59:05.090 回答
0

使用 PHP 打印输出,例如:

echo json_encode($query);

然后从客户端(JavaScript 所在的位置)加载您使用 PHP 打印的 JSON。这可以使用 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

我希望这会有所帮助。

于 2013-08-05T21:51:39.123 回答
0

问题不是 Codeigniter 问题,而是 javascript 范围/文件包含/where-do-i-get-my-data-from 问题。

我一直遇到这个问题并使用了这些解决方案:

  1. 用 .php 扩展名命名我的 php 文件并将它们加载,就好像它们是视图一样。
  2. 只需将需要来自视图的数据的脚本放在使用它的视图文件中
  3. 在我包含的 js 文件中使用 ajax 请求来访问控制器并获取 json 数据。

我最常使用#2(对于我想要在它所引用的表旁边的 js 代码的数据表之类的东西。

我偶尔使用#1,但尽量不要这样做,因为这意味着一些 .js 文件在我的 webroot/js 目录中,而一些在应用程序/视图目录中,这让我或任何想要支持这个项目的人感到困惑.

#3 有时是必要的……但我喜欢避免这种方法,以尽量减少发出的请求数量并尝试消除完全多余的请求(即)。

于 2013-08-07T14:43:06.847 回答