Подтвердить что ты не робот

Библиотека 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

Заранее благодарим за помощь!

4b9b3361

Ответ 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">&times;</button>
    </div>

в представлении javascript

<script type="javascript">
$(document).ready(function(){ 
   <?php echo $logalert; ?>
};
</script>

счастливое кодирование:)