这是通过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。
知道为什么吗?
答案 0 :(得分:7)
在php中连接字符串的运算符是.
而不是+
。加号执行数字加法,然后将字符串转换为值0。
因此您需要更改
'url: ' + $_POST['url'] + $_POST['msg']
到
'url: ' . $_POST['url'] . $_POST['msg']