Библиотека CodeIgniter и Javascript/JQuery
Как говорится в названии, я пытаюсь понять, как использовать библиотеки javascript и jquery в CI.
Следуя инструкциям в документах, я загружаю библиотеку в свой контроллер:
$this->load->library('javascript');
Затем я определяю местоположение файла jQuery (jquery.min.js) в файле config.php:
$config['javascript_location'] = 'http://localhost/ci/assets/js/jquery/');
После этого я открываю файл представления и помещаю в эти две строки:
<?php echo $library_src;?>
<?php echo $script_head;?>
Здесь возникает первая ошибка: Undefined переменная $library_src и $script_head (не понимаю, где я должен их устанавливать)
В любом случае, я прокомментировал эти строки и продолжал работу с jquery lib, загрузив его в контроллер:
$this->load->library('jquery');
Следующая ошибка: Невозможно загрузить запрошенный класс: jquery. (кажется, что он не может найти lib, что я испортил?)
Проверка в системной папке выглядит так: все файлы находятся на месте:
system/libraries/Javascript.php
system/libraries/javascript/Jquery.php
Заранее благодарим за помощь!
Ответы
Ответ 1
Важно отметить, что этот Драйвер отмечен как экспериментальный, поэтому я бы не стал на него положиться.
Кроме того, лично я думаю, что он просит путаницу и головные боли, чтобы попытаться напрямую смешивать серверные части ваших приложений с частями на стороне клиента.
Чтобы использовать javascript в ваших представлениях, я бы просто начал загружать их, как это...
<script type="text/javascript" src="<?= base_url() ?>path/to/jquery.js"></script>
Ответ 2
Поместите код в config.php следующим образом:
$config['javascript_location'] = 'js/jquery/jquery.js';
$config['javascript_ajax_img'] = 'images/ajax-loader.gif';
В вашем файле контроллера (например, контроллеры /sample.php) введите следующие коды:
function __construct()
{
parent::__construct();
$this->load->library('javascript');
}
function index()
{
$data['library_src'] = $this->jquery->script();
$data['script_head'] = $this->jquery->_compile();
$this->load->view('sampleview', $data);
}
В вашем файле вида (например, views/sampleview.php) введите следующие коды:
<?php echo $library_src;?>
<?php echo $script_head;?>
Это работает для меня. Надеюсь, это сработает и для вас. XD
Ответ 3
Поскольку этот драйвер экспериментален, документация еще не совсем там. Но я смог найти решение.
Во-первых, в документации есть ошибка. Если вы не измените основную библиотеку Javascript (не рекомендуется), ссылочная переменная не $script_head
, а фактически $script_foot
.
Во-вторых, как только вы закончите делать свои звонки, кажется, вам нужно запустить
$this->javascript->external();
и
$this->javascript->compile();
Эти функции устанавливают переменные $library_src
и $script_foot
.
Чтобы собрать все это вместе, в вашем контроллере вы бы:
class Some_Controller extends CI_Controller {
public function index()
{
$this->javascript->click('#button', "alert('Hello!');");
$this->javascript->external();
$this->javascript->compile();
$this->load->view('index');
}
}
По вашему мнению, у вас будет
<html>
<head>
<?php echo $library_src; ?>
<?php echo $script_foot; ?>
Ответ 4
Хотя CI сначала ищет папку system
, вы также можете попробовать разместить свои библиотеки в этих папках:
application/libraries/Javascript.php
application/libraries/javascript/Jquery.php
Ответ 5
Использование:
$this->load->library('javascript/jquery');
вместо:
$this->load->library('jquery');
Это загрузит вашу библиотеку jQuery.
Ответ 6
Не уверен, зачем вам загружать js файл через контроллер, а затем повторять его в своем представлении. Вы можете просто загрузить ur js файл с помощью HTML-тегов прямо на ваш взгляд. Передача данных с контроллера и повторение его в поле зрения в основном используется, когда ваше значение переменной является динамическим/должно быть загружено из баз данных и т.д.
Ответ 7
Как мы знаем в руководстве пользователя, во-первых, это был экспериментальный, но работающий. Первый шаг - открыть файл конфигурации в приложении /config/config.php.
Поместите следующую строку:
// path to JS directory you want to use, I recommended to put the .js file under 'root app/js/yourfile.js'
$config['javascript_location'] = 'js/yourfile.js';
Второй шаг - открыть ваш контроллер, в рамках метода конструктора, поставить следующий код:
// Load javascript class
$this->load->library('javascript');
$this->load->library('javascript/jquery'); // if u want to use jquery
Затем, все еще в файле контроллера в методе индекса:
$data['library_src'] = $this->jquery->script(); // Because I refer to use jquery I don't test to use $this->javascript->script().
Затем откройте файл вида и поместите следующий код в заголовок тега:
<?php echo $library_src; ?>
Этот способ работает на меня, пусть попробует.
Ответ 8
У меня была та же проблема, и я нашел:
<?php $this->load->library('javascript'); ?>
<?php $this->load->library('javascript/jquery'); ?>
on https://ellislab.com/forums/viewthread/181742/#860506
Поскольку jquery находится в папке javascript.
или
$autoload['libraries'] = array('database', 'session', 'javascript', 'javascript/jquery');
В файле autoload.php.
Это решило проблему загрузки librairy.
Ответ 9
Вы можете попробовать это, оно работает для меня.
в config.php
$config['javascript_location'] = 'http://localhost/ci/js/jquery.min.js';
в контроллере
public function __construct() {
parent::__construct();
$this->load->library('javascript');
$this->load->library('javascript/jquery');
}
public function index(){
$d['library_src'] = $this->jquery->script();
$d['logalert']=$this->jquery->_show('#logalert',1000,"$('#logalert').html('hello world');");
$this->load->view('main',$d);
}
в поле зрения (глава)
<?php echo $library_src; ?>
в виде содержимого (тела)
<div class="alert alert-dismissable alert-info" id="logalert">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
</div>
в представлении javascript
<script type="javascript">
$(document).ready(function(){
<?php echo $logalert; ?>
};
</script>
счастливое кодирование:)