如何使用Ajax帖子接收表单NAME?

时间:2014-05-10 19:18:11

标签: javascript php jquery ajax forms

在我的网站中,我有不同类型的表单。我想将所有表单提交给' process.php'在' process.php'中使用Ajax和处理数据。但是,我无法在' process.php'中找到表单名称或表单提交名称。通过Ajax发布数据时。

有人可以告诉我,我怎么知道从'process.php'提交了哪个表格?

我尝试了以下失败的步骤:

更改密码.PHP

<form id="change_password_form" action="process.php" method="POST">
  <input type="password" id="current_password" name="current_password" />
  <input type="password" id="new_password" name="new_password" />
  <input type="password" id="confirm_password" name="confirm_password" />
  <input type="submit" value="change password" id="submit" name="change_password" />
</form>

AJAX.JS

$("#submit").click(function(e){
    e.preventDefault();
    $.ajax({
        url:"process.php",
        type:"POST",
        data:$("#change_password_form").serialize(),
        success: function(data){
            $("#msg").html(data);
        },
    });

});

PROCESS.PHP

if(isset($_POST['change_password'])){
    echo("<p>".$_POST['current_password']."</p>");  
    echo("<p>".$_POST['new_password']."</p>");  
    echo("<p>".$_POST['confirm_password']."</p>");  
}

上述代码没有回应任何内容,因为Ajax没有发布 INPUT&gt; TYPE&gt; SUBMIT 。 这是它发布的内容:

Array
(
    [current_password] => 12345
    [new_password] => 123
    [confirm_password] => 12
)

如何让Ajax发布输入&gt; type&gt; submit?或者,如果我将多个表单数据发布到同一个PHP文件进行处理,我如何让PHP了解哪个表单已经提交?

您的回复将受到高度赞赏。 我的细节太多了吗?我的道歉在你面前。

4 个答案:

答案 0 :(得分:1)

您可以为每个表单指定一个名称。 例如,在上面的表格中,

<form name="change_password_form" id="change_password_form" action="process.php" method="POST">
  <input type="password" id="current_password" name="current_password" />
  <input type="password" id="new_password" name="new_password" />
  <input type="password" id="confirm_password" name="confirm_password" />
  <input type="submit" value="change password" id="submit" name="change_password" />
</form>

然后在你的javascript中,

$("#submit").click(function(e){
    e.preventDefault();
    $.ajax({
        url:"process.php",
        type:"POST",
        data:$("#change_password_form").serialize()+'&form_name='+$("#change_password_form").attr("name"),
        success: function(data){
            $("#msg").html(data);
        },
    });

});

在你的PHP文件中,

if(isset($_POST['form_name'])){
    if($_POST['form_name']=="change_password_form")
    {
        echo("<p>".$_POST['current_password']."</p>");  
        echo("<p>".$_POST['new_password']."</p>");  
        echo("<p>".$_POST['confirm_password']."</p>");  
    }
    //Similarly, add your other form processing code.
}

注意:您永远不应该信任用户输入。 $ _POST元素可以轻松操作。在将输入插入数据库之前始终转义输入,或使用PDO

答案 1 :(得分:1)

通过使用hidden输入类型,在表单中传递额外信息的一种更好,更可靠的方法。如果您在表单中添加类似

的内容
<input type="hidden" name="form_type" value="change_password" />

将PHP更改为

if(isset($_POST['form_type']) && $_POST['form_type'] == 'change_password')

然后,您可以获取您可能希望与其他hidden字段一起传递的数据和任何其他信息。

答案 2 :(得分:1)

我会使用一个带有所需名称的隐藏字段,并且肯定会在PHP页面上发布并捕获相同内容并处理我的条件。

我认为这是最简单/最快捷的方法。

答案 3 :(得分:0)

我会用这样的东西:

url:"process.php?form=change_password",

然后在处理过程中,您知道使用$ _GET提交了哪个表单[&#39;表格&#39;];