Кто-то, чтобы помочь, где я ошибаюсь! Ajax возвращает правильную информацию. Он также показывает, что «успех» включает страницу со всеми данными в «alert (html)». Echo $ idName; и echo $ path; распечатать правильную информацию на странице оператора (где это код). На странице нет боковых закусок. Требовать метод не блокирует страницу. Проблема в том, что div include остается пустым! Благодарю.
<div id="include"> <?php if (isset($_POST['idName1'])) { $idName = $_POST['idName1']; $query = mysqli_query($mysqli, "SELECT in_path FROM strani WHERE id_name='$idName '"); $row_path = mysqli_fetch_array($query); $path = $row_path['in_path']; require($path); /*Also tried: require(dirname(__FILE__)."/".$path); all the same!*/ } ?> </div>
Потому что то, что я хочу объяснить дальше, оно не пройдет, как комментарий, я объявляю, что редактирую вопрос. Прикрепите структуру файла и каталоги, а также код, который изменился, чтобы сократить процедуру, чтобы выявить ошибку. Прогнозируемый сценарий выглядит следующим образом: авторизованный помощник с момента входа в систему, откроет main-page.php с дополнительным меню форм, которое разрешено редактировать. Эта страница сразу включает в себя «form-carrier.php», в которой сам включает some-data.php. После того, как он будет прикреплен к тегу привязки, он выберет подходящую форму, эта форма должна быть включена в соответствующий div с «id = include».
Page structure: main-page.php > It includes file: require(form-carrier.php) which iclude: require(form.php); and: require(some-data.php); Dir structure: secured-dir (It contains files: login.php; error.php; error-log) styles-dir js-dir includes-dir (It contains files: functions.php; db-conn-conf.php; process-login-logout.php; session-class.php; error-log) forms-dir (It contains files: form-carrier.php; some-data-php; error_log) forms-byclass1-subdir (It contains files: form-some-name.php; error_log) forms-byclass2-subdir (It contains files: form-some-name.php; error_log) ..... other sub dirs.... working-dir It contains files: (main-page.php; error_log)
Протестировано, указав путь, набрав и обнаружив, что он работает правильно, если требуется вписать («forms-byclass1-subdir / form-some-name.php»); а также «../forms-dir/ forms-byclass1-subdir / form-some-name.php». Это приводит меня к выводу, что «form-some-name.php» зарегистрирован main-page.php, который находится в рабочем каталоге, а также form-carrier.php, расположенный в forms-dir, который ребенок из main-page.php. Не должно работать так, но это работает. Чтобы избежать путаницы, я заменил два файла (form-carrier.php и some-data-php) в одном и том же каталоге «рабочий-файл» вместе с «main-page.php».
Now dir structure look like: forms-dir (only error_log) forms-byclass1-subdir (It contains files: form-some-name.php; error_log) ..... others forms-byclass-subdirs.... working-dir It contains files: (main-page.php; form-carrier.php; some-data-php; error_log) And the php code in form-carrier.php: ... <div id="include"> <?php if (isset($_POST['strPath1'])) { $strPath = $_POST['strPath1']; var_dump($strPath); require($strPath); } ?> </div> ...
Я сократил код и решил не проходить базу данных, но в javascript создаю переменную с полным путем и отправьте ее непосредственно AJAX в целевой файл. И снова результат тот же. Если вы вписываете путь путем ввода, код выполняется правильно, если я использую переменную в javascript, отправленную Ajax, я получаю правильные данные, в alert (html) может читать все данные из формы-some-name. php, а также form-carrier.php; и some-data.php, var_dump ($ strPath); дает мне правильный путь, но включить div по-прежнему пуст! Я буду очень признателен, если кто-то все еще заинтересован в этом, чтобы решить эту проблему, для меня неизвестная и странная проблема.
Поскольку никто не имеет достаточных знаний, хочет потратить время на решение этой проблемы, и я уверен, что это легко разрешимо, я решил пока и пост, надеясь найти полезную для других новичков в этой области как меня! Я вернулся к первому подходу. Этот способ намного проще и предоставляет несколько следующих шагов: page1 achor click> page1 js var для пути и asign для промежуточного файла, указанного на странице 1> js load page3 на стр. 2 с помощью filePath. Проблема с преждевременным обновлением фиксируется следующим образом: сначала с разбиением JS-файла, где были все коды для этих трех файлов, по три на каждую страницу отдельно, а также добавление функции setTimeout к другим процедурам для выполнения с правильным порядком. Теперь он работает гладко!
main-page.php <nav class=”side-menu”> … <?php ... Creating a side-menu from database MySQL ... ?> // echo resault: <ul> <li class=”sub-menu”><a id=”forms-byclass1-subdir” href=”#”></a> <ul> <li class=”anchor”> <a href=”# form-some-name”> <span id=”form-header”>form-label</span></a> </li></ul></li></ul></nav> … </nav> … <div id="fc"> <?php require("form-carrier.php"); ?> </div> <div id=”hidden” <input type="text" id="path" name="path" value=”” /> </div> … form-carrier.php … <div id="include"></div> … Main-page.js … $(".sub-menu > a").click(function(e){ e.preventDefault(); … variables to get a desired path … $("#include").load(path); setTimeout(function() { … other procedures … }, 60); });
Это не значит, что я отказался от подхода, используя Ajax, PHP и db, но пока не найду способ его исправить, это, безусловно, хорошее решение. Поэтому остается призыв к вкладу от гуру веб-дизайна.
Обратите внимание, что для правильного функционирования различных событий: поскольку файл динамически включен, будет проблематичным использование JQuery .click (), а также JavaScript HTML DOM EventListener, если он не используется в html inline. Самый надежный способ, по крайней мере, в моем случае – использование JQuery «.on (события [, селектор] [, данные], обработчик»).