在我的网站中,我有不同类型的表单。我想将所有表单提交给' 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了解哪个表单已经提交?
您的回复将受到高度赞赏。 我的细节太多了吗?我的道歉在你面前。
答案 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;];