Результат формы на той же странице

0

Я посетил следующую ссылку

Теперь у меня есть 2 образца файлов Содержание test2.php

<!DOCTYPE html>
<html>
    <head>
        <title> Form </title>
    </head>
    <body>
        <?php include_once("test.php"); ?>
    </body>
</html>

Содержание test.php

<?php
    if (isset($_POST['submit'])) {
        $arr=array();
        foreach ($_POST as $key => $value) {
            $arr[$key]=$value;
        }
        print_r($arr);
    }
?>
<!DOCTYPE html>
<html>
    <head>
        <title> Form </title>
        <script src="/jquery.min.js">
        </script>
        <link rel="stylesheet" href="/main.css" />
    </head>
    <body>
        <div id="content" id="login_form">
            <form method="post" id="f1" name="f1"  action="test.php">
                <table>
                    <tr>
                        <td>Name :</td><td><input type="text" name="name"/></td>
                    </tr>
                    <tr>
                        <td>Register Number :</td><td><input type="text" name="regno"/></td>
                    </tr>
                    <tr>
                        <td>Date of Birth :</td><td><input type="text" name="dob"/></td> 
                    </tr>
                    <tr>
                        <td><input type="submit" id="b1" name="submit" value="Submit" style="font-size:16px;"/></td>
                    </tr>
                </table>
            </form>
        </div>
        <script>
            $('#f1').submit(function() {
                $.ajax({ 
                data: $(this).serialize(), 
                type: $(this).attr('post'),
                url: $(this).attr('test.php'), 
                success: function(response) { 
                $('#content').html(response); 
        }
    });
    return false; 
});
        </script>
    </body>
</html>

test2.php отображает форму. I want to display the values entered in the form and the form после нажатия кнопки "Отправить", но я вижу только форму. это потому, что $ _POST пуст или потому, что я ошибся в структуре самой страницы?

Изменение: я хочу, чтобы результат отправки формы загружался на страницу test2.php.

  • 0
    К вашему сведению, ваш цикл foreach эквивалентен $arr = $_FORM .
  • 0
    привет я новичок в php, вы можете объяснить $ _FORM?
Показать ещё 6 комментариев
Теги:
forms

3 ответа

1
Лучший ответ

Сделайте два изменения

  1. удалить значение атрибута действия, т.е. изменить action="test.php" на action="" или вы можете удалить его, его не нужно.
  2. изменить return false; return true; в js, $('#f1').submit(function()

(объяснение того, когда следует использовать return true/false, в настоящее время вы запросили действие отправки, которое было вызвано из функции jquery, если из javascript/jquery вы возвращаете false, это означает, что текущий запрос, т.е. submit, не будет выполняться. true, мы будем использовать false, если мы проверяем что-то, и пользователь не добавил правильный вывод, поэтому мы не хотим отправлять страницу до тех пор, пока он не поправит данные. Также в этом случае действие не требуется как вы отправляете через jquery, чтобы вы могли удалить атрибут action = "" из формы)

также у вас уже есть html теги в test.php, в том числе внутри test2.php создадут проблемы.

предложение test test.php напрямую, вам не требуется test2.php.

Здесь полный код для test.php,

<?php
    if (isset($_POST['submit'])) {
        $arr=array();
        foreach ($_POST as $key => $value) {
            $arr[$key]=$value;
        }
        print_r($arr);
    }
?>
<!DOCTYPE html>
<html>
    <head>
        <title> Form </title>
        <script src="/jquery.min.js">
        </script>
        <link rel="stylesheet" href="/main.css" />
    </head>
    <body>
        <div id="content" id="login_form">
            <form method="post" id="f1" name="f1" action="">
                <table>
                    <tr>
                        <td>Name :</td><td><input type="text" name="name"/></td>
                    </tr>
                    <tr>
                        <td>Register Number :</td><td><input type="text" name="regno"/></td>
                    </tr>
                    <tr>
                        <td>Date of Birth :</td><td><input type="text" name="dob"/></td>
                    </tr>
                    <tr>
                        <td><input type="submit" id="b1" name="submit" value="Submit" style="font-size:16px;"/></td>
                    </tr>
                </table>
            </form>
        </div>
        <script>
            $('#f1').submit(function() {
                $.ajax({
                data: $(this).serialize(),
                type: $(this).attr('post'),
                url: $(this).attr('test.php'),
                success: function(response) {
                $('#content').html(response);
                }
            });
            return true;
            });
        </script>
    </body>
</html>
0

Это должно решить вашу проблему. заменить линию

<form method="post" id="f1" name="f1"  action="test.php">

с

<form method="post" name="f1"  action="">

вы не можете использовать "id" в "форме",

0

Может быть, вы найдете свое решение..............

<?php
    if(isset($_POST['submit'])){
        $arr=array();
        foreach( $_POST as $key => $value ){
            $arr[$key]=$value;
        }
        print_r($arr);
    }
?>
<!DOCTYPE html>
<html>
    <head>
        <title> Form </title>
        <link rel="stylesheet" href="/main.css" />
    </head>
    <body>
        <div id="content" id="login_form">
            <form method="post" id="f1" name="f1"  action="test.php">
                <table>
                    <tr>
                        <td>Name :</td><td><input type="text" name="name"/></td>
                    </tr>
                    <tr>
                        <td>Register Number :</td><td><input type="text" name="regno"/></td>
                    </tr>
                    <tr>
                        <td>Date of Birth :</td><td><input type="text" name="dob"/></td> 
                    </tr>
                    <tr>
                        <td><input type="submit" id="b1" name="submit" value="Submit" style="font-size:16px;"/></td>
                    </tr>
                </table>
            </form>
        </div>
    </body>
</html>
  • 0
    Я не t understand what do you mean? I знаю, что запуск этой страницы дает только желаемый результат, но я хочу, чтобы результат в test.php только не хотел загружать новую страницу :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню