为什么PHP不检索AJAX发送的数据?

时间:2016-09-19 02:27:48

标签: php jquery ajax forms

所以我正在尝试使用按钮创建一个联系表单,而不是提交按钮,单击onClick = 'send()'时运行一个功能,而在本地主机w / WAMP上它可以完美地发送电子邮件及其内容。在实时版本上,连接很好,我收到了电子邮件,但我没有得到相应的表单字段数据,即使它与我在WAMP服务器上测试时使用的代码相同。另外,在php文件的顶部我回显了POST数据,在localhost上它会说信息但是在现场,再次,它没有。

  • 我也尝试了.val()而不是.serialize(),如下所示,但没有运气。
  • 我还完成了data: {name:name, email:email...}以及data{'name':name, 'email':email...}

任何帮助将不胜感激!

继承人的AJAX:

function send(){

    var name = $("input[name=name]").serialize();
    var email = $("input[name=email]").serialize();
    var textarea = $("textarea").serialize();
    var business = $("input[name=business]").serialize();
    var website = $("input[name=website]").serialize();

    alert(name);
    alert(email);
    alert(textarea);
    alert(business);
    alert(website);

        $.ajax({ 
            url: 'sendmail.php',
            type: 'POST',
            data: {name, email, textarea, business, website},
            success: function(mydata) {
                alert(mydata);
            }
        });

    }

并且继承了PHP:

<?php

        echo($_POST['name']);
        // does show as output on localhost w/wamp but on live website its mute

        $message=
        'Full Name: '.$_POST['name'].'<br />
        Email:  '.$_POST['email'].'<br />
        Message: '.$_POST['textarea'].'<br />
        Current Website: '.$_POST['website'].'<br />
        Business Name: '.$_POST['business'].'<br />
        ';

        /* Email Sending Script */

        if (!$mail->send()) {
            echo $mail->ErrorInfo;
        } else {
            die("true");    
        }

?>

网络标签

请求标题: http://prntscr.com/ck0btg

发布数据: http://prntscr.com/ck0cni

4 个答案:

答案 0 :(得分:1)

如果要发布Form的所有字段,请使用.serialize()方法。在您的代码中,您必须使用键索引传递数据,这样您就可以在服务器端脚本中使用该键获取数据的值

$.ajax({
    type: "POST",
    url: "sendmail.php",
    dataType: "JSON",
    data: $("Selector_of_Form").serialize(),
    success: function(mydata){
        alert(mydata);
    }
});

答案 1 :(得分:0)

在发送数据之前尝试将数据编码为JSON。

$.ajax({
    type: "POST",
    url: "sendmail.php",
    dataType: "JSON",
    data: $.toJSON(postData),
    success: function(mydata){
        alert(mydata);
    }
});

或者,JSON.stringify(postData)

答案 2 :(得分:0)

尝试这样的事情:

$.ajax({
    type: "POST",
    url: "sendmail.php",
    dataType: "JSON",
    data: {"name":name, "email":email, "textarea":textarea, "business":business, "website":business},
    success: function(mydata){
        alert(mydata);
    }
});

答案 3 :(得分:0)

显然,我之前网站上的.htaccess文件是导致问题的原因。删除后,它就可以了。我认为它是因为我做了所以网站的所有内容都要保存1个月(来自.htaccess的脚本)以及导致它不发送的原因。