Не могу понять, почему мои сайты продолжают переходить на главную страницу? - PullRequest
1 голос
/ 11 апреля 2011

Я создаю веб-сайт с использованием PHP и JQuery, и у меня возникли проблемы с формами.

Например, мой index.php выглядит следующим образом:

<body>
    <?php
        echo "<div id=\"web_Page\">";
        require("public/templates/header.php");
        require("public/templates/menu.php");
        require("public/templates/home.php");
        require("public/templates/footer.php");
        echo "</div>";
    ?>
</body>

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

<div id="web_Page">
    <div id="web_Header">
        //contents of header.php loaded into this div//
    </div>
    <div id="web_Menu">
        //contents of menu.php loaded into this div//
    </div>
    <div id="web_Contents">
        //contents of home.php loaded into this div//
    </div>
    <div id="web_Footer">
        //contents of footer.php loaded into this div//
    </div>
</div>

Затем пункты меню загружаются в область DIV web_contents с использованием кода JavaScript:

$('#web_Menu a').click(function(e)
{
    e.preventDefault();
    $('#web_Content').load($(this).attr('href'), function()
    {
    });
}); 

Теперь код загружает все страницы, выбранные из меню, в область div web_Contents. Но сейчас я создал страницу с именем register.php, и она имеет очень неожиданную функциональность. Ниже приведен HTML-код для него, он также будет загружен в области div web_Contents:

<div id="reg_Div">
    <form id="reg_Form>
        <label>Desired Username: </label><input type="text" name="uname"  id="uname" />
        <button>Register</button>
    </form>
</div>

Страница index.php будет отображаться так:

<div id="web_Page">
    <div id="web_Header">
        //contents of header.php loaded into this div//
    </div>
    <div id="web_Menu">
        //contents of menu.php loaded into this div//
    </div>
    <div id="web_Contents">
        <div id="reg_Div">
            <form id="reg_Form>
                <label>Desired Username: </label><input type="text" name="uname"  id="uname" />
                <button>Register</button>
            </form>
        </div>
    </div>
    <div id="web_Footer">
        //contents of footer.php loaded into this div//
    </div>
</div>

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

Может ли кто-нибудь понять, почему код вызвал бы запуск триггерной кнопки на index.php. Кроме того, так как index.php - это просто набор страниц require (), и туда также загружается register.php, что заставляет страницу автоматически отбрасывать div web_Contents, который содержал register.php, и заменять его содержимым home. PHP

Это действительно смущает меня?

Любая обратная связь будет принята с благодарностью. Спасибо.

Ответы [ 4 ]

1 голос
/ 11 апреля 2011

Форма имеет атрибут действия, который сообщает браузеру, куда перемещаться после нажатия кнопки «Отправить».Если атрибут действия не указан, то по умолчанию это текущая страница, в вашем случае «index.php».

1 голос
/ 11 апреля 2011

Во-первых, вам не хватает цитаты в этой строке

<form id="reg_Form>  //   <--- missing a quote

также вы захотите обновить ее до чего-то подобного ...

<form id="reg_Form" onsubmit="return(false);">  //   <--- should prevent form submittion
0 голосов
/ 11 апреля 2011

Причина, по которой форма отправляется после нажатия кнопки, несмотря на отсутствие атрибута action, заключается в том, что для атрибута действия по умолчанию используется URL-адрес текущей страницы, если он не указан.чтобы предотвратить отправку формы, необходимо включить атрибут onsubmit в тег формы.Если код JavaScript, содержащийся в этом атрибуте, возвращает false, то форма не будет отправлена.

<form id="reg_Form" onsubmit="return false;">
0 голосов
/ 11 апреля 2011

HTML-формы отправляют свои данные на страницу, если ни одна не указана, то она отправляется на текущую страницу (index.php в вашем случае).

<form id="reg_Form">

То же, что и

<form id="reg_Form" action="index.php" method="GET">

Чтобы остановить отправку формы, создайте обработчик onsubmit, который скажет ей не отправлять.

$('#reg_Form').submit(function(e){
    e.preventDefault(); // Tells the form not to submit
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...