onclick заменить php включенный файл - PullRequest
0 голосов
/ 01 октября 2011

Я не уверен, что то, что я пытаюсь сделать, возможно, но вот оно.

У меня есть заголовок, внутри этого заголовка есть php include для "login.php"

«Login.php» - это ссылка, по которой пользователь переходит на «Forgot.php».

Я бы хотел вместо того, чтобы пользователь перешел на «Forgot.php», простообновите страницу с помощью имени «login.php», которое заменено на «Forgot.php», или переключите контент, вроде как с помощью Iframe.

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

Спасибо за любую помощь, которую вы можете предоставить, примеры кода приветствуются.

Ответы [ 4 ]

7 голосов
/ 01 октября 2011

Если вы пытаетесь выполнить это без перезагрузки страницы, вам нужно будет использовать AJAX.

Если вы хотите просто сохранить login.php, вы можете сделать что-то вроде:

<a href="login.php?p=forgot">link</a>

с PHP что-то вроде

<?
if ( isset($_GET['p']) && $_GET['p']=="forgot") {
    include('forgot.php');
} else {
    include('login.php');
}
1 голос
/ 01 октября 2011

PHP анализируется полностью перед отображением страницы в браузере пользователя, поэтому такие вещи, как onclick() или onsubmit(), которые представлены в JavaScript (на стороне клиента), недоступны в PHP.

Было бы несколько возможных решений:

1) Используйте AJAX для отправки запроса на сервер и замените содержимое HTML на странице результатом.

2) Как вы упомянули, используйте iFrames.

3) У вас на странице login.php есть скрытый <div>, содержащий HTML-код для forgot.php, и используйте простой метод JavaScript onclick() для обмена содержимым страницы. В этом случае обе "страницы" фактически будут находиться в одном файле login.php.

0 голосов
/ 01 октября 2011

Я могу думать о двух вещах:

Что бы я сделал, если предположить, что различия между вашими login.php и Forgot.php не слишком отличаются, потому что вы не меняете страницу,поместить html для Forgot.php чуть ниже html для login.php, скрыть html login.php и показать содержимое Forgot.php.

пример:

<div id = "login">
    <!-- Login HTML -->
</div>
<div id = "forgot" style = "display:none" >
    <!-- forgot password HTML -->
</div>
<input type="button" value="Forgot Password?" onclick="forgot()" />

Javascript:

function forgot(){
    document.getElementById('login').style.display='none';
    document.getElementById('forgot').style.display='block';
}

В противном случае вы можете использовать ajax-вызов к странице и вставить необходимые элементы.Это создаст заметную паузу.

0 голосов
/ 01 октября 2011

Вы не можете изменить оператор включения из javascript, потому что скрипт уже был выполнен к тому времени, когда вы видите свою страницу в браузере.

Используйте ajax для динамического изменения содержимого страницы без обновления. Если вы используете jquery, код будет довольно простым:

<script type="text/javascript">
$(document).ready(function() {
    $('#link').click(function() {
        $.get('script.php', function(data) {
            $('#divOfContainer').html(data);
        });
    });
});
</script>
<div id="divOfContainer"><!-- the content to be fetched with ajax will be put here --></div>
<a href="#" id="link">Link</a>
...