为什么mail()函数发送主体为“0”的电子邮件?

时间:2012-01-19 13:27:00

标签: ajax php

这是通过Ajax发送的。这是JS:

$.ajax({
    url: objCommon.ajax,
    type: 'POST',
    data: {type:'feedback', msg:$('.commonsFeedbackDiv').text(), url:window.location.href},
    success: function(data){
        console.log(data);
        if(data.search('ajaxError') === -1){
            console.log('sent');
        }else if(data.search('msg')){
            alert('Please enter a message.');
        }
    }
});

处理请求的PHP:

global $user;
echo $_POST['msg'];
echo $_POST['url'];
if(isset($_POST['msg']) && $_POST['msg'] !== ''){
    mail('commons@example.com', 'Commons Feedback', 'url: ' + $_POST['url'] + $_POST['msg'], 'From: ' . $user->mail);
}else{
    echo 'ajaxError - no msg';
}

您可以在success()回调函数中看到我正在将响应记录到控制台,并且此响应由PHP代码开头附近的两个echo语句组成。最终在控制台中的字符串是正确的;它包含消息和URL。但是,我收到的实际电子邮件只包含内容中的数字0。

知道为什么吗?

1 个答案:

答案 0 :(得分:7)

在php中连接字符串的运算符是.而不是+。加号执行数字加法,然后将字符串转换为值0。

因此您需要更改

'url: ' + $_POST['url'] + $_POST['msg']

'url: ' . $_POST['url'] . $_POST['msg']