Я хочу сделать что-то вроде этого:
страница A имеет ссылку на страницу B
страница B получает контент из базы данных и обрабатывает его
результат со страницы B отображается в блоке div на странице A
Обратите внимание, что я не хочу покидать страницу A, пока страница B обрабатывает информацию из базы данных.
Что я действительно пытаюсь сделать, так это избегать использования фреймов на сайте, и я хочу, чтобы страницы отображались в div. Это возможно?
Думаю, это вопрос новичка, но меня это действительно беспокоит, и я даже не знаю, с чего начать.






Вам нужны JavaScript и AJAX.
Я тоже не могу использовать ... это для класса в школе, и мне действительно нужно использовать PHP: S
Я не знаю, можно ли предотвратить загрузку страницы только на стороне сервера.
Вы хотите сделать это на стороне клиента, а не на стороне сервера. Мне лично нравится JQuery
Возможно, вам понадобится простая версия страницы B. Это очень часто. Дайте мне знать, если вам нужны примеры.
Вам нужен AJAX!
AJAX сделает это, но шаги будут немного отличаться от того, что вы описываете.
Короткий ответ: нет.
Для этого вам понадобятся клиентские скрипты или AJAX.
Проверьте XAJAX.
Это библиотека AJAX для PHP, которая будет делать то, что вы хотите. Он пишет Javascript, необходимый для обработки материалов на стороне клиента.
Вы сделаете следующее. 1. Включите библиотеки XAJAX на свои php-страницы. 2. Зарегистрируйте свои функции 3. Вызовите их на стороне клиента из javascript, используя xajax_phpfunctionName ().
Как уже говорили все, это нужно сделать с помощью какой-то настройки AJAX. Если вы более знакомы с PHP, чем с JavaScript (или с серверными сценариями, чем с клиентскими), я также рекомендую вам проверить XAJAX. [Который был отправлен Адамом, когда я отвечал.]
В этом примере, вероятно, есть миллион ошибок, но он должен помочь вам встать на верный путь :)
файл a.php
<html>
<body>
<script type = "text/javascript" src = "stuff.js"></script>
Data to process please: <input type = "text" name = "datatoprocess" id = "datatoprocess" />
<br />
<input type = "button" value = "Do Something" onclick = "dostuff();" />
<hr />
<div id = "resultarea">
</div>
</body>
</html>
файл b.php
<?php
$message = '';
if ( isset( $_REQUEST['datatoprocess'] ) ) {
$datatoprocess = $_REQUEST[ 'datatoprocess' ];
if ( strlen( $datatoprocess ) > 0 ) {
if ( $datatoprocess == 'foo' ) {
$message = '<span style = "color:#ffff00;background:#ff0000;">bar</span>';
} else {
$message = 'You sent me: "'.htmlentities($datatoprocess).'"';
}
} else {
$message = 'That is really short data.';
}
} else {
$message = 'No data to process in request?';
}
echo $message;
?>
файл stuff.js
// poor man quick and dirty ajax :|
function dostuff() {
var xmlHttp=GetXmlHttpObject();
if (xmlHttp==null) {
alert ("Browser does not support HTTP Request.");
return;
}
var datatoprocess = document.getElementById('datatoprocess').value;
var url = "b.php"
+"?datatoprocess = " + escape(datatoprocess)
;
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState==4 || xmlHttp.readyState= = "complete") {
var AjaxAnswer = xmlHttp.responseText ;
document.getElementById('resultarea').innerHTML = AjaxAnswer;
}
};
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
function GetXmlHttpObject() {
var objXMLHttp=null;
if (window.XMLHttpRequest) {
objXMLHttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
return objXMLHttp;
}
Что ж, изначально я хотел заставить PHP сбрасывать содержимое HTML (и PHP) страницы в DIV на другой странице (я знаю, звучит очень странно). Вы делаете это с помощью этой функции:
ob_start();
include($filename);
$return_str = ob_get_contents();
ob_end_clean();
Если вы сделаете это так, он проанализирует PHP в файле $ filename и вернет результат в виде строки. Чтобы сделать дамп и показать содержимое, просто удалите последнюю строку.
Я вроде как новичок, и это, вероятно, не лучший способ сделать это, но у меня это сработало. Надеюсь, поможет.
Я думаю, стоит иметь в виду, что всю работу, которую выполняет PHP, он выполняет еще до того, как вы что-нибудь отправите клиенту. Он творит всю свою магию, упаковывает страницу и затем отправляет ее клиенту целиком и полностью. Чтобы изменить ситуацию позже, потребуется что-то еще, например AJAX.