有人在我错的地方帮忙! Ajax返回正确的信息。它还显示“成功”包含页面,其中包含“alert(html)”中的所有数据。 Echo $ idName;和echo $ path;在承运人页面中打印正确的信息(代码在哪里)。页面中没有副茶点。 Require方法不会阻止页面。问题是div包含仍然是空的!感谢。
<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'。一旦通过锚标记,他将选择适当的表格,此表格应包含在“id = include”的相应div中。
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)
通过键入指定路径进行测试,并发现如果在require(“forms-byclass1-subdir / form-some-name.php”)中输入,它可以正常工作;以及“../forms-dir/ forms-byclass1-subdir / form-some-name.php”。这使我得出结论,“form-some-name.php”由main-page.php注册,它位于working-dir中,以及form-carrier.php中,位于forms-dir中,这是main- page.php的孩子。不应该像这样工作,但它的工作原理。为了避免混淆,我在同一个目录“working-dir”和“main-page.php”中替换了两个包括文件(form-carrier.php;和some-data-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)中可以从form-some-name读取所有数据。 php,以及form-carrier.php;和some-data.php,var_dump($ strPath);给了我正确的路径,但包括div仍然是空的!如果有兴趣有兴趣解决这个问题,我将非常感激,对我来说是未知和奇怪的问题。
答案 0 :(得分:0)
由于没有足够的知识,想要花时间解决这个问题,而且我确信这很容易解决,我现在解决了,希望能找到对我这个领域的其他初学者有用的东西!我回到了第一种方法。这种方式更简单,并提供了以下几个步骤:page1 achor click&gt; page1 js var for path和asign to intermediate filed in page1&gt; js load page3 in page2 with 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内联中使用)将会出现问题。至少在我的情况下,最可靠的方法是使用Jquery“.on(events [,selector] [,data],handler)”。