2015-04-21 3 views
0

Я использую Codeigniter и Smarty (механизм шаблонов) и, следовательно, используя шаблоны.php закодированный json для шаблона и javascript

У меня есть метод, который вызывает шаблон, который имеет все функции HTML, CSS и JS:

public function index() 
{ 
    //dashboard text 
    $this->data['title'] = 'Dashboard'; 
    $this->data['subtitle'] = 'feeds, users, and more'; 

    //load the donut graph data 
    $fbyg = $this->feed_model->countFeedsByGroups(); 
    echo json_encode($fbyg); 

    //parses the dashboard template 
    $this->smartyci->display('dashboard.tpl', $this->data); 
} 

дело в том, что мне нужно отправить информацию на один из JS файлов, ограниченных к моей приборной панели. tpl, чтобы сделать графику.

Поэтому я знаю, что мне нужно закодировать php-массив в jSon-объект и отправить его в шаблон. Но, как мне это сделать, когда мне нужно не только отправлять и эхо с помощью json, но также я должен отображать мой шаблон для отправки другой информации?

Другой вопрос: как получить json и получить данные? Я стараюсь и до сих пор ничего не найдено:

С моей dashboard.tpl:

<script src="{site_url()}application/views/js/test.js"></script> 
    <script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js'></script> 

От test.js:

$.getJSON('admin.php', function(data) { 
    console.log(data.vgro_name); 
});  
+0

Не используйте 'echo', но ** возвращайте строку вместо **, поэтому вы сможете использовать ее, когда захотите. – romuleald

+0

Вы имеете в виду, что я должен поместить его в переменную типа $ this-> data ['jsondata'] = json_encode ($ fbyg)? как мне получить доступ к этим данным в функции? – Limon

+0

удалите 'echo json_encode ($ fbyg);' и добавьте 'return json_encode ($ fbyg);' в конце вашей функции **, чтобы вы могли «echo index()» или '$ data = index (); 'затем используйте его, как вы хотите. – romuleald

ответ

0

Вы можете установить его как

$this->data['fbyg'] = json_encode($fbyg); 

И затем в вашем javascript do

var yourVar = <?php echo $fbyg ?>; 

уборщик решение было бы сделать вызов Ajax функции, которая будет возвращать что-то вроде

$fbyg = $this->feed_model->countFeedsByGroups(); 
echo json_encode($fbyg); 

после загрузки страницы.

Edit JQuery Ajax прибудет:

$.ajax({ 
    type: "GET", 
    url: "urlToYourFunction", 
    success: function(data){ 
    var yourVar = data; 
    } 
}); 

я только когда-либо сделал и опубликовать запросы с angularjs и JQuery, но вот еще StackOverflow сообщение подробно, как это сделать с обычным JavaScript:

https://stackoverflow.com/a/18078705/3739551

Надеюсь, это поможет!

+0

Я не хочу использовать ; потому что я не загружаю javascript внутри php-файла. Так что мне нужно получить доступ к этой переменной из-за пределов php-файла. – Limon

+0

Тогда вы захотите сделать вызов ajax :) –

+0

Как это сделать? Я не могу найти решения – Limon

Смежные вопросы