Hoax
-
Posts
138 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Store
Posts posted by Hoax
-
-
-
-
Опишу более детально.
С помощью аякса мы получаем доступ к файлу, но зачастую, нас волнует не столько получаемый файл, а именно класс (или функция), который в нем находится, но вот проблема, в каком файле вызывать данную функцию. (чтобы все работало естественно)
Как видно из примеров которые я указал. У МЕНЯ скрипты работают только тогда, когда я вызываю нужную функцию "f()" в том файле, в котором она была написала.
Т.е.
// ---- file.phpfunction f() {// написали}f() // вызвали
И файле где у нас ajax, просто указали доступ к этом (file.php) файлу - тогда и именно тогда все получается, ф-я вызывается и ajax возвращает ее результат.
НО! Что если мне необходимо (с точки зрения работы приложения и просто для удобства) вызвать эту функцию f(), в другом файле? Вот тут становится проблема
-
Дело не начале кода с <?php, и его концом, я писал это только что, а не копировал из файла чтобы избежать кучи кода, само собой у меня имеется так
// file.php<?phpfunction f() { echo $_GET['q']; }?>
// ajax.php<?phpinclude 'file.php'f();?><script>... xhr.open()....</script>
Но даже в данном случае не работает, как я уже сообщал.
Т.е. в данном случает, php инклудит файл и вызывает функцию с ошибкой отсутствия $_GET['q'] (что естественно, параметр же будет передан только при клике).
А после клика ничего не происходит, т.е. ошибки нет, просто ничего не выводится
-
У меня всего два файла, файл с php-функцией, и ajax-файл, который его получает.
Если сделать так
// file.phpecho $_GET['q'];
// ajax.php....xhr.open('GET', 'file.php?q=errg', true);...
- работает!
______________
Но если сделать так
// file.phpfunction f() { echo $_GET['q']; }
// ajax.php....xhr.open('GET', 'file.php?q=errg', true);...
- не работает
___________________________еще пример
Если сделать так
// file.phpfunction f() { echo $_GET['q']; }f();
// ajax.php....xhr.open('GET', 'file.php?q=errg', true);...
- работает.
Но если сделать так
// file.phpfunction f() { echo $_GET['q']; }
// ajax.php<?phpf();?>....xhr.open('GET', 'file.php?q=errg', true);...
или так
// ajax.php<?phpinclude 'file.php' // или require_once разницы в данном случае не играетf();?>....xhr.open('GET', 'file.php?q=errg', true);
- не работает
-
Пересоздал тему для более легкого объяснения проблемы, которая до сих пор не решена. Задача банальная - вызвать функцию с помощью ajax при клике на кнопку.
В первом файле, который необходимо вызвать я указываю следующее :
// phpfunction a() {echo 'huu';}a(); // вызвали
Второй файл (где расположен ajax) вызывает открывает первый.
// ajax file<button onclick="go()" id="div">0</button><p id="text"></p><script>function go() {var client = new XMLHttpRequest();client.onreadystatechange = handler;client.open("GET", '1.php'); // открываем файл и получаем ф-ю с вызовомclient.send();}function handler() {if(this.status == 200 && this.responseText != null) {document.getElementById('text').innerHTML = this.responseText;}}</script>
В данном случае, все работает хорошо, но что делать, если мне надо вызвать функцию в другом файле (а не в том, где она была написана как в примере выше).
Например так.
// ajax file<?phprequire_once '1.php';a();?><button onclick="go()" id="div">0</button><p id="text"></p>........
В данном случае при клике ничего не происходит...
-
Не понятно что хотите, свой mvc фреймворк написать ?
Я всего лишь хочу передать значение запроса в условиях аякса.
Код аджакса и скриншот ошибки приведите здесь.Код самый обычный, брал с js ru
Скопирую.
// Пример с POSTvar xhr = new XMLHttpRequest();var params = 'name=' + encodeURIComponent(name) + '&surname=' + encodeURIComponent(surname);xhr.open("POST", '/submit', true)xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')xhr.onreadystatechange = ...;xhr.send(params);
—
Постараюсь еще раз объяснить в чем проблема.
Не получается передать значение $_POST между файлами.
Если ajax составить так -
// tmp.phpxhr.open("POST", '/model.php', true)
А серверный файл так
// model.phpecho $_POST['text'];
То model.php получит значение (POST) и вернет его (echo).
Но если будет так.
// model.phpclass model { public function f() { echo $_POST['text']; }}// ajax сможет получить значение и его вернуть в том случае, если будет вызван соответствующий метод// т.е. этот :$obj = new model();$obj->f(); // НО (основная проблема), если метод $obj->f() я вызываю ИЗ ДРУГОГО файла, php говорит, что несуществует $_POST['text'], и ajax // ничего не возвращает
Ошибка одна, со стороны php - отсутствует значение $_POST (но это даже не ошибка, просто пока значения этого значения нет (ничего не введено в форму. if(!empty($_POST['text'])) echo $_POST короче).
Со стороны js, просто отсутствует вывод этого значения.
Пробовал require_once - аналогично.
Предположу, что это связано с очередной обработкой php и js
-
-
Если в серверном файле указать следующее.
// model.phpclass a {public function a() { echo $_POST['href']; }}$a = new a();$a->a();
Вернет значение $_POST;
А если в нем указать
// model.phpclass a {public function a() { echo $_POST['href']; }}
// global.phpinclude 'model.php';$a = new a();$a->a();
Ничего не выйдет
-
а какая разница, какой запрос приходит - ajax или обычный get?
разница в том, что если я передал обычный get- (или) post-запрос средствами php в контроллер, я этот контроллер (точнее его класс) смогу инклудить в файл random.php и вызвать его из random.php с данными запроса.
А ajax отказывается выполняться, если вызов класса происходит в другом файле.
-
Допустим есть 3 файла (controller, model, view), первый получает запросы (POST) и передает второму, который записывает их в бд, а третий подготавливает их к выводу в шаблоне.
Т.е. MVC.
Ajax мы связываем с серверным файлом, который, по сути, должен выполнять одну из перечисленных выше функций, но какую?
Если в ajax указать связь с файлом, который записывает данные бд (что очень удобно, т.к. мы получили запрос и сразу записали его), то этот класс (класс записи в бд) должен вызываться именно файле, в котором он объявлен (т.е. если в файле model.php мы объявили класс, то в нем же и должен идти вызов, т.е. $m = new model(); ) иначе AJAX не сможет организовать передачу.
Т.е. при том условии, что класс model (в файле model.php) который записывает данные в бд, вызывается, скажем, в файле random.php, аякс не пашет.
Как правильно организовать передачу, а то я уже запарился, надеюсь понятно объяснил, заранее спасибо.
-
Проблема решена созданием таблицы с указанной кодировкой (имеется в виду DEFAULT CHARSET utf8)
-
в денвере есть постоянная беда с кодировками.
у меня xampp
а про апач забыли? в .htaccess: или PHP_VALUE default_charset utf-8 или AddDefaultCharset UTF-8указал в .htaccess AddDefaultCharset UTF-8 но ничего не вышло
-
В основных кодировках я могу поставить любую, но только из раздела utf8mb4_***
______________________________
А вот саму базу поставил в utf8_general_ci но ситуация не изменилась
Таблицу также перевел в указанную кодировку, но основные настройки phpmyadmin также не дают изменить кодировку общих настроек
-
какая у вас кодировка стоит в поле с текстом в этой таблице? посмотрите через phpmyadmin
у меня какой-то баг с этим. Ставлю там "utf8_general_ci", сохраняется, и тут же возвращает прежний результат "utf8mb4_general_ci", который сейчас в итоге стоит.
-
В phpmyadmin поставь сравнение "utf8_general_ci".
сделал также как указано в примере, перегрузил веб-сервер, введ данные- получил то же самое.
PHP_VALUE default_charset utf-8где конкретно это указывать?
Разкомментил строку в php.ini - ;default_charset = "UTF-8"
Не вышло
-
В PHP установил следующее
mysqli->set_charset("utf8")
при проверке
mysqli->character_set_name() //показывает utf8
Также поставил в корневой файл
header( 'Content-Type: text/html; charset=utf-8' );
В Notepad++ установил у всех файлов кодировку UTF8 БЕЗ BOM
и все равно при записи в БД русских символов, вместо них выдает - ????
Что не так?
-
В последнее время замечаю много сообщений о том, что __autoload хоть и полезная ф-я, однако более медленная чем include (хотя информацию об этом не нашел, если есть-скиньте). Также стек spl, который позволяет регистрировать несколько ф-й autoload, которые в массиве загружаются в порядке очереди. В связи с этим вопрос, стоит ли использовать данные технологии при постройке cms, а именно подключение и вызов классов url?
-
Может стоит сперва посмотреть на другие cms, кроме Joomla, которая даже вовсе не популярна, среди не новичков? И различные php-фреймворки? Чем городить свой велосипед
Почему же велосипед? Я делаю Cms специально под формат сайта, многие популярные cms-ки предлагаются как гигантский шаблон, который пичкается модулями и плагинами для расширения, зачем это все нужно если легче (именно для меня самому создать то, что нужно, а не изучать чего там нету и дописывать).
Joomla как раз таки популярна среди новичков, я сам начинал именно с Joomla, как и многие другие.
В целом вы описали "классическую" CMS построенную на MVC. Могу порекомендовать вот такую серию уроков - мне она сильно помогла. А ещё могу сказать, что "велосипеды" - это очень хорошо!Да спасибо, я как-то заходил на этот урок но что-то меня он не очень впечатлил, возможно чуть позже изучу его поподробнее
- 1
-
В зависимости от кол-ва контента и его связи с другими компонентами. Для небольшой информации подойдет модуль.
Я например сделал такой, который в админе собираю превьюшку новости со ссылкой на статью, правда без БД.
-
Решил создать тестовую наиболее удобную для себя CMS (впервые), до этого пользовался Joomla (c шаблоном mvc), поэтому данный вид (немного измененный) проектирования я решил использовать и у себя. Пока я попробую кратко описать основную задумку все этого.
Есть самый главный файл в корне сайта, напоминающий контроллер, так что можно назвать его так ControllerCore.
ControllerCore - Этот файл получает значения GET запросов, в зависимости от которых вызывает класс, индивидуальный для указанной ссылки (страницы/ раздела меню).
После подключения индивидуального класса, назовем его базовый класс страницы, этот класс вызывает 3 основных файла, которые формируют страницу: model, cotroller, view. (для каждого базового класса страницы есть свои MVC).
Эти файлы являются дочерними (что собственно логично, потому что описывать идентичный код для каждой страницы в них было затруднительно), поэтому они наследуют отцов global_model, global_view, которые в свою содержат всю структуру, посредством вызова отдельных компонентов (классов данных меню и т.д.)
В итоге мы получаем наследование уже имеющихся данных (всех), и при необходимости можем их предопределить, что позволит нам добавлять/удалять/изменять данные на конкретном разделе/страницы просто изменив необходимый класс. Что дает полный контроль над дизайном и данными.
Собственно примерно так я вижу архитектуру сайта. Как считаете, годится ли она вообще?
-
Я имел в виду содержание данных в MVC, в модели например содержаться данные из БД, которые нужно передать view, что собственно и можно сделать через создание объекта например.
За ссылку спс, изучу.
-
Хорошо.У меня есть 2 базовых класса, в одном данные, в другом их вывод, в них есть реализация методов. А также есть 2 дочерних, которые наследует каждый по своему классу, и если требуется - перераспределяют методы.
Поэтому 2-м базовым классам нужен доступ друг к другу, чтобы получить данные и соответственно их представить, как и дочерним друг к другу, чтобы вывести предраспределенные методы.
Базовые классы нужны лишь для того, чтобы избавить себя от мучения каждый раз описывать один и тот же метод.
Не знаю, может быть это правда не правильно, просто я пока другого выхода не нашел
-
имплементить
куда? В абстрактный класс?
Каким способом можно создать связь между двумя интерфейсами? С помощью их наследования?
Не получается вызвать функцию (ajax)
in JavaScript
Posted
Т.е. только так получится реализовать? Просто придется так каждый раз инклудить из файла в файл