python小菜 2015-07-13 09:12 采纳率: 0%
浏览 18

Ajax + Php功能

I have made a contact form to send emails with an Ajax request, this request call a PHP function from another file. This function is working well but after the calling of this function, every form datas are missing.

HTML :

<form method="post" id="formContact">
    <fieldset>
        <legend>Formulaire contact de Bicrav'art</legend>
        <div>
            <input type="text" placeholder="Nom Prénom" name="name" id="formName">
            <input type="tel" placeholder="Téléphone" name="tel" id="formTel">
            <input type="email" placeholder="Email" name="email" id="formEmail">
            <input type="text" placeholder="Objet" name="subject" id="formSubject">
        </div>
    <textarea cols="30" rows="10" placeholder="Message" name="message" id="formMessage"></textarea>
    <button type="submit" id="formSubmit">Envoyer</button>
    </fieldset>
</form>

AJAX :

$(document).ready(function() {
$('#formContact').submit(function(event) {

    var formData = {
        // 'functionName' : 'contact',
        'name' : $('#formName').val(),
        'email' : $("#formEmail").val(),
        'tel' : $("#formTel").val(),
        'subject' : $("#formSubject").val(),
        'message' : $("#formMessage").val()
    };

    console.log(formData);

    $.ajax({
        url: "includes/functions",
        type: "POST",
        data: {action: 'contact', contactData: formData},
        dataType: 'json',
        encode: true
    })
    .done(function(data){
        console.log(formData);
        console.log(data);

        if(!data.success){
            console.log('EMAIL SEND');
        }else{
            console.log('EMAIL NOT SEND');
        }
    });
    event.preventDefault();
});
});

PHP Function :

<?php
// error_reporting(E_ALL);
// ini_set("display_errors", 1);

if(isset($_POST['action'])) {
    $action = $_POST['action'];
    switch($action) {
        case 'contact' : sendEmail();
    }
}

// SEND EMAIL
function sendEmail(){
    $data = $_POST['contactData'];
    $data = array();
    if (!empty($_POST['name'])
        && !empty($_POST['email'])
        && !empty($_POST['tel'])
        && !empty($_POST['subject'])
        && !empty($_POST['message']))
    {
        // var_dump($_POST['name']);
        // var_dump($_POST['email']);
        // var_dump($_POST['tel']);
        // var_dump($_POST['subject']);
        // var_dump($_POST['message']);

        $to = '*****@hotmail.fr';
        $content = ''.$_POST['message'].'';
        $subject = 'Nouvelle demande de contact - Bicrav\'Art';
        $from = ''.$_POST['email'].'';

        $uri = 'https://mandrillapp.com/api/1.0/messages/send.json';
        $api_key = '****************';
        $content_text = strip_tags($content);

        $postString = '{
            "key": "' . $api_key . '",
            "message": {
            "html": "' . $content . '",
            "text": "' . $content_text . '",
            "subject": "' . $subject . '",
            "from_email": "' . $from . '",
            "from_name": "' . $from . '",
            "to": [
            {
                "email": "' . $to . '",
                "name": "' . $to . '"
            }
            ],
            "track_opens": true,
            "track_clicks": true,
            "auto_text": true,
            "url_strip_qs": true,
            "preserve_recipients": true
            },
            "async": false
        }';

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $uri);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true );
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);
        $result = curl_exec($ch);

        $data['success'] = true;

    }else{
        $data['success'] = false;
    }
    echo json_encode($data);
    }

The sendEmail function is working well, but form datas do not pass this

if(isset($_POST['action'])) {
$action = $_POST['action'];
switch($action) {
    case 'contact' : sendEmail();
}
}

Thx for your help, Sorry for my bad english

  • 写回答

1条回答 默认 最新

  • weixin_33712987 2017-09-08 14:23
    关注

    Your error is here:

    $data = $_POST['contactData'];
    $data = array();
    if (!empty($_POST['name'])
        && !empty($_POST['email'])
        && !empty($_POST['tel'])
        && !empty($_POST['subject'])
        && !empty($_POST['message']))
    {
    

    This $_POST['contactData'] is not empty, it contains all your fields. But you are checking all fields inside $_POST instead of $_POST['contactData'].

    Every field should be:

    $data = $_POST['contactData'];
    $data = array();
    if (!empty($_POST['contactData']['name'])
        && !empty($_POST['contactData']['email'])
        && !empty($_POST['contactData']['tel'])
        && !empty($_POST['contactData']['subject'])
        && !empty($_POST['contactData']['message']))
    {
    

    You can alternatively write in the first row:

    $_POST = $_POST['contactData'];
    $data = array();
    if (!empty($_POST['name'])
        && !empty($_POST['email'])
        && !empty($_POST['tel'])
        && !empty($_POST['subject'])
        && !empty($_POST['message']))
    {
    

    .. and every field match.

    评论

报告相同问题?

悬赏问题

  • ¥15 C# P/Invoke的效率问题
  • ¥20 thinkphp适配人大金仓问题
  • ¥20 Oracle替换.dbf文件后无法连接,如何解决?(相关搜索:数据库|死循环)
  • ¥15 数据库数据成问号了,前台查询正常,数据库查询是?号
  • ¥15 算法使用了tf-idf,用手肘图确定k值确定不了,第四轮廓系数又太小才有0.006088746097507285,如何解决?(相关搜索:数据处理)
  • ¥15 彩灯控制电路,会的加我QQ1482956179
  • ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传
  • ¥15 (关键词-电路设计)
  • ¥15 如何解决MIPS计算是否溢出
  • ¥15 vue中我代理了iframe,iframe却走的是路由,没有显示该显示的网站,这个该如何处理