Javascript Codeigniter-将json发送到脚本文件
我像这样查询我的模型的数据库Javascript Codeigniter-将json发送到脚本文件,javascript,codeigniter,json,external-script,Javascript,Codeigniter,Json,External Script,我像这样查询我的模型的数据库 function graphRate($userid, $courseid){ $query = $this->db->get('tblGraph'); return $query->result(); } 我的控制器从我的模型中获取数据,我对其进行json编码,就像这样 if($query = $this->rate_model->graphRate($userid, $courseid)){ $da
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>
您需要将输出json字符串的结果打印到html生成的文件中。 但是您需要使用一些脚本来解析字符串。我建议你: 关于第二个问题。可以通过以下方式实现:
$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"),
)
);
使用PHP打印输出,如:
echo json_encode($query);
然后从客户端(JavaScript驻留的地方)加载使用PHP打印的JSON。这可以使用JQuery轻松完成
像这样:
$.get("test.php", function(data) {
alert("Data Loaded: " + data);
});
您可以在此处找到有关此的更多信息:
现在您需要解析这些数据,以便JavaScript能够理解您从服务器获得的文本。为此,您可以在上述示例中的“data”对象上使用JSON.parse方法。解析后,可以像JavaScript中的任何其他对象一样使用该对象。您可以在此处找到关于JSON.parse的更多信息:
我希望这会有所帮助。问题不是Codeigniter问题,而是javascript作用域/文件包含/where-do-I-get-my-data-from问题 我经常遇到这种情况,并使用了以下解决方案:
#3有时是必要的……但我喜欢避免这种方法,以尽量减少提出的请求数量,并尽量消除完全多余的请求(也就是说).如何在script.js中获得这样的信息?为了得到一个更好的答案,我想你必须详细说明你的问题。问题是,我无法让外部脚本文件中的json对象使用它。如果你不向我们提供有关代码实际流的更多信息,我们将无法帮助你。也许@Muhammad Ali的答案可以给你一些想法……请参考对于更新的问题,更多的解释和更多的代码。我现在来看看@Muhammad Ali的代码。如果不想使用ajax,也可以将php文件包含在脚本标记中,或者只是将json回送到脚本标记中的javascript变量中。我应该在哪里回送?从您的代码中,我想您的意思是在控制器中回送它,但这无法实现这就是为什么我不知道如何在外部jQuery文件中加载它
$.get("test.php", function(data) {
alert("Data Loaded: " + data);
});