首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP请求未到达jQuery脚本

PHP请求未到达jQuery脚本
EN

Stack Overflow用户
提问于 2013-05-24 05:51:41
回答 3查看 1.4K关注 0票数 1

我正在尝试创建一个带有javascript验证的邮件表单。表单值应与ajax一起发送到php脚本,后者将数据通过电子邮件发送到电子邮件地址。

然而,php代码既没有成功调用,也没有错误的jquery回调被调用,在chrome的javascript控制台中也没有任何日志。

这是我的简化html页面:

代码语言:javascript
复制
<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:

代码语言: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文件:

代码语言:javascript
复制
$myemail = "someone@something.com";
$subject = "test";

$message = $_POST["message"];

mail($myemail, $subject, $message);

echo "ok";

有人能指出我做错了什么吗?我也尝试过简单的get方法,但它们也不能到达服务器。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-24 05:57:30

像这样试一下:

更改:

代码语言:javascript
复制
$(document).ready(function () {
    var form = $("#mail-form");

    form.submit(function () {
        e.preventDefault();
        send(form);
        }
    });
});

至:

代码语言:javascript
复制
$("#mail-form").submit(function (e) {
        e.preventDefault();
        send(form);
});

所以看起来是这样的:

代码语言:javascript
复制
$("#mail-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,
        success: function (data) {
            onSucces();
        },
        error: function () {
            onError();
        }
    });
}
票数 0
EN

Stack Overflow用户

发布于 2013-05-24 06:02:46

在你的JavaScript上试试这个;success是错误的,你的submit()调用中有一个毫无意义的括号:

代码语言:javascript
复制
$(document).ready(function () {
    var form = $("#mail-form");
    form.submit(function (e) {
        send(form);
        e.preventDefault();
        return(false);
    });
});
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,
        success: function(data){
            onSucces();
        },
        error: function(){
            onError();
        }
    });
}
票数 2
EN

Stack Overflow用户

发布于 2013-05-24 06:02:54

永远不要依赖客户端的数据验证。

对于您的问题,请使用alert确认成功或错误回调函数均未执行。您还可以删除dataType,看看这是否有什么不同。

您也可以这样做

代码语言:javascript
复制
var formData = form.serialize();

而不是这个

代码语言:javascript
复制
var formData = { name: $("#name").val(),
    email: $("#email").val(),
    phone: $("#phone").val(),
    message: $("#message").val(),
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16724525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档