【问题标题】:How do I call the PHP mail() function in my JS?如何在我的 JS 中调用 PHP mail() 函数?
【发布时间】:2014-03-12 00:49:00
【问题描述】:

我有一个难题。我已经为我正在构建的网站创建了这个订单请求页面,它是这样工作的:

  1. 您选中/取消选中核心项目,并根据其状态(活动或非活动),将真/假值应用于对应的order.js 中的布尔值。同样,它会为其他项目和您的信息获取所需的单位计数,并将它们应用于变量。
  2. 它将这些变量分组到数组中,现在,console.log() 它们。

问题来了……这是 order.js 文件的 sn-p。

function compileInfo() {

    console.log("compileInfo active");

    var name = "Name: " + $("#name").val() + "\n";
    var email = "Email: " + $("#email").val() + "\n";
    var phone = "Phone: " + $("#phone").val() + "\n";
    var weddingDate = "Wedding Date: " + $("#date").val() + "\n";
    var comments = "Comments: " + $("#comments").val() + "\n";

    var base = "Base Experience: " + $("#base").hasClass("active") + "\n";
    var special = "Special Edition: " + $("#special").hasClass("active") + "\n";
    var teaser = "Teaser Trailer: " + $("#teaser").hasClass("active") + "\n";
    var raw = "Raw Footage: " + $("#raw").hasClass("active") + "\n";

    var standard = "Standard Shipping: " + $("#standard").hasClass("active") + "\n";
    var expedited = "Expedited Shipping: " + $("#expedited").hasClass("active") + "\n";

    var dvd = "Standard DVD: " + a + "\n";
    var br = "Standard Blu-Ray: " + b + "\n";
    var dvdSe = "Special DVD: " + x + "\n";
    var brSe = "Special Blu-Ray: " + y + "\n";

    var info = new Array();
        info[0] = name;
        info[1] = email;
        info[2] = phone;
        info[3] = weddingDate;
        info[4] = comments;

    var services = new Array();
        services[0] = base;
        services[1] = special;
        services[2] = teaser;
        services[3] = raw;

    var delivery = new Array();
        delivery[0] = standard;
        delivery[1] = expedited;

    var extras = new Array();
        extras[0] = dvd;
        extras[1] = br;
        extras[2] = dvdSe;
        extras[3] = brSe;

    var dataVar = info + "\n" + services + "\n" + delivery + "\n" + extras;
    var dataVarJSON = JSON.stringify(dataVar);

    console.log(dataVar);

    $.ajax({
        type: "POST",
        url: "order.php",
        data: {data : dataVarJSON},

        success: function() {
            console.log("SUCCESS");
        }
    });
}

function validate() {
    var name = $("#name").val();
    var email = $("#email").val();
    var weddingDate = $("#date").val();

    if (name === "" || email == "" || weddingDate == "") {
        alert("You must complete all required fields to send this request.");
    } else {
        console.log("working");
        compileInfo();
        return true;
    }

}

这是我收到的 PHP:

<?php
    header('content-type: application/json; charset=utf-8');
    header("access-control-allow-origin: *");

    $body = json_decode(stripslashes($_POST['data']));

    $to = "thekevinhaube@gmail.com";
    $subject = "Order Request";

    function sendInfo() {
        mail($to, $subject, $body);
    }
 ?>

现在,我远非 PHP 专家。这是我第一次接触它,事实上。我怎样才能让它发送。 POST 似乎很好,但没有发送到列出的电子邮件地址。任何和所有的帮助表示赞赏!同样,这是我第一次使用 PHP,所以...

【问题讨论】:

  • 你在哪里打电话给sendInfo
  • 您可能不想在您的POST 变量上使用stripslashes(),因为这会弄乱您的json,导致$body 变成NULL。哦,你的未调用函数中存在变量范围问题。
  • 我不确定如何调用 sendInfo 函数,但我现在意识到这是我遇到的一个问题。

标签: javascript php jquery html ajax


【解决方案1】:

你需要给sendInfo一些参数:

function sendInfo($to, $subject, $body) {
  ...
}

不要在你的本地主机上尝试 mail(),如果可能的话,在线尝试。

【讨论】:

  • 我遇到的一个问题是不知道如何调用 PHP 函数。你能进一步解释一下吗?
  • 是的,好吧,在使用函数时,您必须将其视为程序中的一个单独“事物”。它不知道你程序的其余部分发生了什么。所以你必须给它一些可以使用的东西=参数。参数是您的函数可以使用的值,例如function addValues($value1, $value2) { return $value1+$value2; } 您现在可以调用它并为其提供所需的数据:echo addValues(4, 5); 将返回 9 并显示 9。您的项目中不需要您的函数。只需输入mail($to, $subject, $body);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-23
  • 1970-01-01
  • 1970-01-01
  • 2013-07-15
  • 1970-01-01
  • 2022-01-24
  • 2019-08-19
相关资源
最近更新 更多