У меня есть страница, которая загружает контент с помощью метода load () из jQuery.

Вот как это выглядит (моя главная страница):

<?php include 'inc/header.php' ; ?>
Some Content
<button onclick="$('#loadContainer').load('contentToLoad.php')">Load</button>
<div id="loadContainer">
</div>
<?php include 'inc/footer.php'; ?>

Тогда у меня есть мой contentToLoad.php, который является модулем php, используя сессии, функции из файлов и т. Д ...

В header.php у меня есть теги head, session_start () и все необходимые файлы для хорошей работы с contentToLoad.php.

Но, похоже, что моему contentToLoad.php не удается добраться до файлов и объявлений header.php.

Мне действительно нужно переписать все это вверху моего файла contentToLoad.php? Или есть решение сделать так, чтобы contentToLoad.php распознавал код из header.php?

Спасибо

0
Cephou 27 Май 2017 в 19:39

2 ответа

Лучший ответ

Вы не понимаете, как взаимодействуют PHP и JS, поэтому, чтобы ответить на ваш вопрос, я просто объясню это, и вы сами должны найти ответ.

PHP-код всегда запускается до загрузки страницы (за некоторыми очень маленькими исключениями, которые нас не особо волнуют), или, для простоты, «пока страница белая». После завершения выполнения PHP выходные данные отправляются и показываются клиенту.

Теперь то, что вы пытаетесь сделать, это запустить скрипт после того, как страница уже загружена, с помощью javascript, это нормально, но сервер не видит никакой разницы между этим и простой загрузкой индекса, а затем в новой вкладке открыв contenToLoad.php через несколько секунд, все, что вы делаете, - это инструктируете браузер через javascript для загрузки информации в ваш div.

Два сценария запускаются в разное время, в разных процессах, как разные экземпляры, и не имеют представления о существовании другого сценария. Это очень отличается от включения одного сценария PHP внутри другого, который на базовом уровне аналогичен копированию, вставляя тот сценарий, в который вы его включаете, поэтому они, очевидно, выполняются одновременно, и ваш включенный сценарий может получить доступ к любой информации, хост-скрипт объявлен.

1
Cârnăciov 27 Май 2017 в 17:17

JQuery загрузки только загрузить HTML, вы должны включить PHP, как он сам

<?php 
include_once( __DIR__ .'/contentToLoad.php');
?>

Но если вам нужен только результат страницы php, попробуйте изменить включения внутри contenToLoad.php, чтобы они работали с __DIR__, есть разница между относительным и включенным путем, поэтому он должен работать для вас.

Пример:

<?php include_once ("inc/header.php"); ?>
Some Content
<button onclick="$('#loadContainer').load('contentToLoad.php')">Load</button>
<div id="loadContainer">
</div>
<?php include_once ("inc/footer.php"); ?>

Изменить все включения внутри contentToLoad.php на include_once( __DIR__ .'/include_file.php');

1
Otávio Barreto 27 Май 2017 в 16:54