我正在構建一個codeigniter/php web應用程序。 我想通過一個JSON對象從控制器傳遞到視圖加載時的視圖,以便可以通過javascript訪問。Codeigniter - 如何將JSON作爲參數傳遞給視圖
的JSON看起來如下:
{
"event": {
"id": "1",
"name": "Some name",
"description": "Some description",
"address": "1 Main st."
},
"members": {
"others": [
{
"id": "26",
"name": "Brad Black"
},
{
"id": "27",
"name": "Bill Blue"
}
],
"current": {
"id": "1",
"name": "Jill White"
}
}
}
控制器代碼如下所示:
public function index()
{
$some_data = $this->Some_model->get_some_data();
$some_data = json_encode($some_data);
$data = array (
'some_data' => $some_data
);
$this->load->view('some_view',$data);
}
的視圖(some_view)代碼如下所示:
<script src="path/to/scripts/some_script.js" type="text/javascript"></script>
<script type="text/javascript">
some_data = "<?php echo $some_data?>";
</script>
<div class="main">
</div>
javascript(some_script)代碼如下所示:
var some_data;
$(document).ready(function(){
some_data = $.parseJSON(some_data);
});
所面臨的挑戰是,由於JSON對象作爲字符串發送(json_encode後),它具有字符,如{和報價作爲它的一部分,這時候我將其分配到的JavaScript不喜歡var(some_data =「」;)。我也嘗試過使用,但它不工作。
我試着做了一堆東西,沒有工作,爲了取得進展,我暫時結束了更換「控制器 $數據[‘some_data’] = str_replace函數(''」的,‘"’ $ some_data);
public function index()
{
$some_data = $this->Some_model->get_some_data();
$some_data = json_encode($some_data);
$data = array (
'some_data' => str_replace('"', """, $some_data);
);
$this->load->view('some_view',$data);
}
和更換"回 「的JavaScript some_data = some_data.replace內側(/ " /克,「」');
var some_data;
$(document).ready(function(){
event_data = event_data.replace(/"/g, '"');
some_data = $.parseJSON(some_data);
});
這是一種醜陋的,我正在尋找更好的解決方案。
任何指針將不勝感激。
更新! 問題解決了,看起來像多餘的引號打破了事情。
的解決方案是內嵌mohan.gade的回答是:
控制器:
public function index()
{
$some_data = $this->Some_model->get_some_data();
$some_data = json_encode($some_data);
$data = array (
'some_data' => $some_data;
);
$this->load->view('some_view',$data);
}
查看:
some_data = <?php echo $some_data?>;
</script>
感謝mohan,我實際上是按照你正確的順序建議的,當我寫下我按照錯誤順序剪切和粘貼這些行的問題時。 JSON創建正確,我的問題是如何將它分配給客戶端的JavaScript var(view/javascript)。我已經更新了這個問題來反映它。 – user898836
希望它能工作! –
您的代碼運行良好!它看起來像我有(出於某種原因)圍繞標籤額外的報價...標記你的答案是正確的 – user898836