Php jQuery电子邮件没有文本/提交两次
我试图简单地发送一封电子邮件到一个硬编码的电子邮件地址,作为一个报告错误按钮的功能。但是,我尝试输入到发送电子邮件的php文件中的文本不会被传输,我的javascript文件中的email函数会同时发送两封电子邮件。不知道为什么会发生这两种情况 这是我所有关于电子邮件功能的代码 错误页面(HTML) 我的PHP文件名为:Php jQuery电子邮件没有文本/提交两次,php,javascript,email,jquery,Php,Javascript,Email,Jquery,我试图简单地发送一封电子邮件到一个硬编码的电子邮件地址,作为一个报告错误按钮的功能。但是,我尝试输入到发送电子邮件的php文件中的文本不会被传输,我的javascript文件中的email函数会同时发送两封电子邮件。不知道为什么会发生这两种情况 这是我所有关于电子邮件功能的代码 错误页面(HTML) 我的PHP文件名为: <?php $message = $_POST["vardata"]; mail("example@gmail.com", "Mystery person", $me
<?php
$message = $_POST["vardata"];
mail("example@gmail.com", "Mystery person", $message);
?>
如果$message字段是硬编码的,我可以在电子邮件中很好地获取文本,但它无法从vardata标记中获取文本。而且,正如您所看到的,它提交了两次。只需单击ReportBug按钮并点击send。在PHP文件中,您将获得
$\u POST[“vardata”]
,但在javascript中,该字段称为data
。因此,请改用$\u POST[“data”]
。在PHP文件中,您将获得$\u POST[“vardata”]
,但在javascript中,该字段称为data
。因此,请改用$\u POST[“data”]
。在分析控制台
面板时,似乎有两个ajax
调用,这是因为id=“send”
附加了两次单击事件
因此,这里有一个技巧,首先取消绑定id=“send”
锚点上的所有点击事件,然后附加点击事件,这将解决两次电子邮件问题
$(document).ready(function(){
$("#send").unbind("click");
$("#send").click(function(){
email();
});
});
在分析控制台
面板时,似乎有两个ajax
调用,这是因为id=“send”
附加了两次单击事件
因此,这里有一个技巧,首先取消绑定id=“send”
锚点上的所有点击事件,然后附加点击事件,这将解决两次电子邮件问题
$(document).ready(function(){
$("#send").unbind("click");
$("#send").click(function(){
email();
});
});
您需要使用以下名称将数据发送到服务器:
$.ajax({ /* ... */, data: {vardata: vardata}});
至于双重发送,您将两次连接click
事件,虽然我看不到第二个事件连接到哪里,但我怀疑它是自动生成的,然后一次性丢弃
您可以通过调用jQuery来查看连接的事件。_data($(“#send”)[0],“events”)调试控制台中的代码>。两个事件是有线的,两个处理程序函数是相同的(它们调用email();
)。您需要使用以下名称将数据发送到服务器:
$.ajax({ /* ... */, data: {vardata: vardata}});
至于双重发送,您将两次连接click
事件,虽然我看不到第二个事件连接到哪里,但我怀疑它是自动生成的,然后一次性丢弃
您可以通过调用jQuery来查看连接的事件。_data($(“#send”)[0],“events”)调试控制台中的代码>。两个事件是有线的,两个处理程序函数都是相同的(它们调用email();
)。当您通过jQuery的ajax方法向PHP发送数据时,将其设置为JSON对象会很有帮助,这样您就可以从PHP中的$\u POST数组中获取所需的值
例如:
var name = "Joey";
var email = "example@gmail.com"
var vardata = $("textarea").val();
$.ajax({
type: "POST",
url: "email.php",
data: {name:name, email:email, vardata:vardata},
success: function() {
alert("Your bug report was sent!");
}
});
通过这种方式,您可以在PHP代码中获得如下数据:
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['vardata'];
当您通过jQuery的ajax方法将数据发送到PHP时,将其设置为JSON对象是很有帮助的,这样您就可以从PHP中的$\u POST数组中获得所需的值
例如:
var name = "Joey";
var email = "example@gmail.com"
var vardata = $("textarea").val();
$.ajax({
type: "POST",
url: "email.php",
data: {name:name, email:email, vardata:vardata},
success: function() {
alert("Your bug report was sent!");
}
});
通过这种方式,您可以在PHP代码中获得如下数据:
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['vardata'];
data
是发送到服务器的字段名,而不是字段名。这不起作用。。。我仍然没有收到电子邮件中的文本:/对不起,我习惯于使用$.post
而不是$.ajax
。在文章中,你不必设置类型,花括号之间的内容就像我说的那样。把它弄混了,我的错。数据
是,而不是发送到服务器的字段的名称。这不起作用。。。我仍然没有收到电子邮件中的文本:/对不起,我习惯于使用$.post
而不是$.ajax
。在文章中,你不必设置类型,花括号之间的内容就像我说的那样。搞混了,我的错。这对发送两次问题有效!谢谢:)我希望我能选择两个正确的答案..这当然是正确的,但这是他面临的一个bug的解决办法。如果他不知道是什么在连接它们,那么出现三次点击事件只是时间问题。类似地,您可以链接这些调用:$(“#发送”)。解除绑定(“单击”)。单击(…)代码>以避免潜在的DOM查找。这对发送两次问题有效!谢谢:)我希望我能选择两个正确的答案..这当然是正确的,但这是他面临的一个bug的解决办法。如果他不知道是什么在连接它们,那么出现三次点击事件只是时间问题。类似地,您可以链接这些调用:$(“#发送”)。解除绑定(“单击”)。单击(…)代码>以避免潜在的DOM查找。此答案有效!文本现在显示出来了!我认为这是因为您将所有字段分组到“data”变量中。非常感谢大家!你们都做出了贡献并帮助了我:)这个答案奏效了!文本现在显示出来了!我认为这是因为您将所有字段分组到“data”变量中。非常感谢大家!你们都做出了贡献并帮助了:)