Можно ли изменить свойство элемента HTML, используя его идентификатор с PHP? - PullRequest
2 голосов
/ 17 декабря 2008

Я хочу сделать что-то вроде этого:

страница A имеет ссылку на страницу B
страница B получает контент из базы данных и обрабатывает его
результат со страницы B отображается в div на странице A

Обратите внимание, что я не хочу покидать страницу A, пока страница B обрабатывает информацию базы данных.

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

Я предполагаю, что это своего рода вопрос новичка, но это действительно беспокоит меня, и я даже не знаю, с чего начать.

Ответы [ 8 ]

10 голосов
/ 17 декабря 2008

Вы хотите AJAX!

AJAX сделает это, но шаги будут немного отличаться от того, что вы описываете

  • страница A имеет ссылку, которая вызывает функцию javascript
  • функция javascript выполняет AJAX-вызов страницы B, которая получает контент из базы данных и обрабатывает его
  • результат со страницы B возвращается в функцию javascript
  • страница a отображает ее в виде div
2 голосов
/ 17 декабря 2008

То, что вы ищете, это JavaScript и AJAX.

1 голос
/ 17 декабря 2008

Вероятно, в этом примере не так много вещей, но он должен помочь вам выбрать верный путь:)

файл 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: &quot;'.htmlentities($datatoprocess).'&quot;';
        }
    } else {
        $message = 'That is really short data.';
    }
} else {
    $message = 'No data to process in request?';
}

echo $message;

?>

file 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;
} 
1 голос
/ 17 декабря 2008

Вы хотите сделать это на стороне клиента, а не на стороне сервера. Мне лично нравится JQuery

Возможно, вам понадобится простая версия страницы B. Это очень часто. Дайте мне знать, если вам нужны примеры.

0 голосов
/ 19 декабря 2008

Ну, то, что я первоначально хотел сделать, это заставить PHP выгружать содержимое HTML (и PHP) страницы в DIV на другой странице (я знаю, это звучит очень странно). То, как вы делаете это с помощью этой функции:

ob_start();  
include($filename);  
$return_str = ob_get_contents();  
ob_end_clean(); 

Если вы сделаете это так, он проанализирует PHP в файле $ filename и вернет результат в виде строки. Чтобы сделать дамп и показать содержимое, просто удалите последнюю строку.

Я своего рода новичок, и это, вероятно, не лучший способ сделать это, но это сработало для меня. Надеюсь, это поможет.

0 голосов
/ 17 декабря 2008

Как и все остальные, это нужно сделать через какую-то настройку AJAX. Если вы более знакомы с PHP, чем с JavaScript (или сценариями на стороне сервера, чем сценариями на стороне клиента), я бы также порекомендовал вам оформить заказ XAJAX . [Который был опубликован Адамом, когда я отвечал.]

0 голосов
/ 17 декабря 2008

Выезд XAJAX .

Это библиотека AJAX для PHP, которая, по сути, будет делать то, что вы хотите.
Он пишет Javascript, необходимый для обработки вещей на стороне клиента.

Вы будете делать следующее. 1. Включите библиотеки XAJAX в ваши php-страницы. 2. Зарегистрируйте свои функции 3. Вызвать их на стороне клиента из JavaScript с помощью xajax_phpfunctionName ()

0 голосов
/ 17 декабря 2008

Краткий ответ: нет.

Для этого вам понадобятся сценарии на стороне клиента или AJAX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...