首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ajax不调用php,php直接调用时工作

ajax不调用php,php直接调用时工作
EN

Stack Overflow用户
提问于 2018-06-22 03:46:45
回答 1查看 40关注 0票数 1

我知道这个问题以前已经回答过了,但我似乎仍然找不到适合我的解决方案。我有一个表单提交不能使用ajax调用。我非常确定这不是HTML或PHP,因为如果我直接执行php,一切都会正常工作。但是,在使用ajax时,我会收到控制台日志消息,并执行成功块,但我从未收到过电子邮件。任何帮助都将不胜感激

我的java脚本函数

代码语言:javascript
复制
$('#ajax-contact').submit(function(event){

    console.log(event)
    event.preventDefault();
    var firstname = $('#fname');
    var lastname = $('#lname');
    var subject = $('#subject');
    var body = $('#body');

    console.log(firstname);
    console.log(lastname);
    console.log(subject);
    console.log(body);
    $.ajax({
        method: "POST",
        URL: "send_mail.php",
        data: "firstname=" + firstname + "&lastname=" + lastname + "&subject=" + subject + "&body=" + body,
        success: function(){
            $("#ajax-contact").trigger("reset");
             window.alert("Message Successfully Sent");
        }
    });
});

和php文件

代码语言:javascript
复制
<?php

$to = "xxxxxxx";
$subject  = $_POST["subject"];
$body = "Message from ".$_POST["firstname"]." ".$_POST["lastname"]." \r\n ".$_POST['body'];
if (mail($to, $subject, $body)) {
echo('Email successfully sent!');
return("success");
} else {
echo('Error Failed...');
return("Error");
}

?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-22 04:30:29

数据需要正确编码,以防它包含影响解析的特殊字符(特别可能在body参数中)。使用serialize()方法从表单获取所有输入:

代码语言:javascript
复制
data: $(this).serialize(),

或者传递一个对象,jQuery将自动序列化该对象:

代码语言:javascript
复制
data: { firstname: firstname, lastname: lastname, subject: subject, body: body},

在ES6中,您可以将其简化为:

代码语言:javascript
复制
data: {firstname, lastname, subject, body},
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50976461

复制
相关文章

相似问题

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