【发布时间】:2023-04-11 05:50:01
【问题描述】:
我正在尝试创建一个具有 javascript 验证的邮件表单。表单值应使用 ajax 发送到 php 脚本,该脚本将数据通过电子邮件发送到电子邮件地址。
但是,php 代码、成功或错误 jquery 回调都不会被调用,chrome 的 javascript 控制台中也没有任何日志。
这是我的简化 html 页面:
<form id="mail-form">
<div class="input-row">
<div class="label"><label for="name">Your name: *</label></div>
<div class="input"><input type="text" name="name" id="name" maxlength="50"/></div>
<input id="submit-button" type="submit" value="send"/>
</form>
我的javascript:
$(document).ready(function () {
var form = $("#mail-form");
form.submit(function (e) {
e.preventDefault();
send(form);
}
});
function send(form) {
var formData = { name: $("#name").val(),
email: $("#email").val(),
phone: $("#phone").val(),
message: $("#message").val(),
};
$.ajax({
type: "POST",
url: "/scripts/mailer.php",
datatype: "text",
data: formData,
succes: function (data) {
onSucces();
},
error: function () {
onError();
}
});
}
和我的简化 php 文件:
$myemail = "someone@something.com";
$subject = "test";
$message = $_POST["message"];
mail($myemail, $subject, $message);
echo "ok";
有人能指出我做错了什么吗?我也尝试过简单的 get 方法,但它们也无法到达服务器。
【问题讨论】:
-
我不知道这是否会在从 IDE 到堆栈的转换过程中丢失,但
success是这样拼写的,$.ajax预计也是这样。 -
您通过 jQuery 提交的调用中似乎有一个额外的括号
-
追踪此类(错误语法)的方法是使用浏览器的 Javascript 调试器 - Chrome 有一个特别好的调试器。页面一加载你就会看到你的JS是无效的,这确实可以加快调试速度。
-
我在忙的时候检查了控制台,但它完全是空的。没有显示语法错误。