表单结果在同一页面

时间:2013-12-31 12:11:38

标签: javascript php jquery html forms

我访问了以下 Link

现在我有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="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
        </script>
        <link rel="stylesheet" href="css/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页面中加载表单提交的结果。

3 个答案:

答案 0 :(得分:1)

进行两项更改

  1. 删除操作属性值,即将action="test.php"更改为action="",或者您可以将其删除,不需要。
  2. 在js return false;
  3. 中将return true;更改为$('#f1').submit(function()

    (解释何时使用return true / false,当前你请求了一个提交动作,它是从jquery函数调用的,如果你从javascript / jquery返回false,则表示当前请求即提交不会发生。 如果是真的,提交将发生。如果我们验证某些内容并且用户没有添加正确的输出,我们会使用false,因此我们不想在更正数据之前提交页面。 在这种情况下也不需要操作,因为您通过jquery提交,因此您可以从表单中删除action =“”属性)

    你在test.php中已经有html个标签,包括在test2.php里面会产生问题。

    建议直接调用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="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
            </script>
            <link rel="stylesheet" href="css/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>
    

答案 1 :(得分: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="css/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>

答案 2 :(得分:0)

这必须解决您的问题。  替换

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

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

你不能在“形式”中使用“id”