表单提交PHP ajax
表单提交PHP ajax
我正在设置一个表单提交,但在将Ajax连接到PHP并将表单信息发送到所需的电子邮件地址时遇到一些问题。我不是这方面的专家,因为这是我第一次尝试使用AJAX提交表单信息。
对于出现的问题,我对任何建议都表示感谢。
提前感谢
此代码现在全部工作正常我已更新问题并附上了新代码。
表单:
JQUERY/AJAX
$("form").submit(function(e) { event.preventDefault(); $.ajax( { 'url' : $(this).attr('action'), 'type' : "POST", 'data' : $(this).serialize(), success:function(success) {alert("嘿")}, }); });
PHP
if(isset($_POST['name'], $_POST['email'], $_POST['telephone'], $_POST['message'])){ $name = $_POST['name']; $email = $_POST['email']; $telephone = $_POST['telephone']; $message = $_POST['message']; $to = "name@email.com"; $subject = "来自$name通过网站的消息:"; $txt = "这条消息来自网站:\n $message \n 联系方式:\n 姓名:$name,电子邮件:$email,电话号码:$telephone"; $header = "来自网站"; mail($to,$subject,$txt,$headers); }
问题的原因是在JQUERY代码中,使用了frm.serialize()
将表单数据序列化,然后通过frm.children(':submit').attr('name')
获取提交按钮的名称,并将它们拼接在一起作为请求的数据。但是在拼接过程中,没有使用正确的语法,导致拼接后的数据格式不正确。
解决方法是修改JQUERY代码,将data: frm.serialize()+'&'+frm.children(':submit').attr('name')
改为data: frm.serialize()+'&'+frm.children(':submit').attr('name')+'=1'
,在拼接数据时,正确添加等号和数值1作为提交按钮的值。
以下是整理后的
在进行表单提交时,有时候会遇到Form submission PHP ajax问题,即通过AJAX技术将表单数据发送到服务器的PHP文件进行处理,但是无法正确提交数据的问题。下面是一个简单的解决方案。
首先,我们需要在HTML中设置一个表单和一些输入字段,如下所示:
然后,我们使用JQUERY来处理表单的提交事件,代码如下:
frm = $('#form'); frm.submit(function(e) { e.preventDefault(); $.ajax({ url: frm.attr('action'), type: frm.attr('method'), data: frm.serialize()+'&'+frm.children(':submit').attr('name')+'=1', success: function(res) { $('#message').html(res); frm.trigger("reset"); } }); });
在这段代码中,我们使用frm.serialize()
将表单数据序列化,并使用frm.children(':submit').attr('name')
获取提交按钮的名称。然后,我们将它们拼接在一起作为请求的数据,但是在拼接过程中,我们需要使用正确的语法。所以,我们将data: frm.serialize()+'&'+frm.children(':submit').attr('name')
修改为data: frm.serialize()+'&'+frm.children(':submit').attr('name')+'=1'
,以正确添加等号和数值1作为提交按钮的值。
最后,我们需要在服务器的PHP文件中处理表单数据,并将其存储到数据库中。以下是一个简单的PHP代码示例:
在这段代码中,我们首先导入数据库连接文件,然后检查是否有名为"addUser"的表单字段。如果有,我们将获取"firstname"和"lastname"的值,并将它们插入到数据库中。如果插入成功,我们将输出"Success",否则输出"Failed"。
通过以上的解决方案,我们可以解决Form submission PHP ajax问题,实现正确的表单提交和数据处理。
问题的原因是$_POST['submit']没有在序列化的表单数据中发送。解决方法是在AJAX函数中的变量中添加"&submit=submit",或者检查POST数组是否有数据并进行相应操作。另外,还要注意一些变量(如$subject和$headers)是否被设置,需要在代码中添加基本的错误检查。以下是整理好的文章:
在处理表单提交时,有时会遇到一个问题:$_POST['submit']在序列化的表单数据中没有被发送。解决这个问题的方法有两种。
第一种方法是检查POST数组是否有数据,如果不为空,则继续进行后续操作。可以使用以下代码实现:
if(!empty($_POST)) { // 如果POST数组不为空,继续执行操作 // ... }
第二种方法是在AJAX函数中的变量中添加"&submit=submit"。可以通过在序列化数据的变量后面加上"&submit=submit"来实现。具体代码如下:
'data' : $(this).serialize() + '&submit=submit',
此外,还需要注意一些变量是否被正确设置,比如$subject和$headers变量。如果这些变量没有被设置,可以在代码中添加一些基本的错误检查。可以在文件开头的
error_reporting(E_ALL); ini_set('display_errors', 1);
以上是关于解决Form submission PHP ajax问题的方法,希望对你有所帮助。如果这个答案对你有帮助,请点击旁边的复选标记来接受答案。