如何从PHP访问表单数据($ _POST不起作用?)

时间:2019-07-18 15:52:53

标签: javascript php jquery post

我正在使用$ .post方法将二维数组从js文件传递到ajax.php脚本。我的.js函数看起来像这样

function doSendEmail (aData) {
  var sData = JSON.stringify(aData)
  $.post('dd-ajax.php', { m: 'sendEmail', sData: sData },
    function () {})
    .done(function () { console.log('Done') })
    .fail(function (err) { showMessage(`unexpected error: ${err.responseText}`) })
    .always(function () { spinner(false) })
}

然后我的Ajax.php文件如下:

if ($method == "sendEmail") {
    $sData = array_key_exists('sData', $_POST) ? $_POST['sData'] : NULL;

    foreach($sData as $line) {
        $to = $line[7];
        $name = $line[0];
        $subject = 'Email Subject';
        $message = `Dear $name, Blah blah blah`;
        mail($to, $subject, $message);
    }
}

我在浏览器中的标题>表单数据中看到了我的数据,但是我似乎无法访问Php中的任何内容?

我已经尝试了以上array_key_exists,也尝试了$_POST[sData],但没有任何乐趣。

我是新手,所以请保持友善

2 个答案:

答案 0 :(得分:0)

感谢Alvaro向我指出正确的方向。 $method在$ _GET中在文件中被声明为'm'的=。向其添加if可以对其进行排序。我猜是菜鸟错误。。。还是谢谢你

$method = array_key_exists('m', $_GET) ? $_GET['m'] : NULL;
if ($method == NULL) {$method = array_key_exists('m', $_POST) ? $_POST['m'] : NULL;}

答案 1 :(得分:-2)

data = { 'm': 'sendEmail', 'sData': sData };
 $.ajax({
        url: 'dd-ajax.php',
        type: 'POST',
        data: data,
        success: function (data) {
            console.log('Done');
        },
        error: function() {
            console.log("error");
        }
    });

dd-ajax.php

$method = $_POST['m'];
if ($method == "sendEmail") {
    $sData = array_key_exists('sData', $_POST) ? $_POST['sData'] : NULL;

    foreach($sData as $line) {
        $to = $line[7];
        $name = $line[0];
        $subject = 'Email Subject';
        $message = 'Dear $name, Blah blah blah';
        mail($to, $subject, $message);
    }
}