2012-01-19 5 views
1

이것은 Ajax를 통해 전송됩니다.mail() 함수가 본문이 "0"인 전자 메일을 보내는 이유는 무엇입니까?

$.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 : 다음은 JS의

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

당신은 내가 콘솔에 대한 응답을 기록하고있어 success() 콜백 함수에서 볼 수 있으며,이 응답한다 PHP 코드의 시작 부분에있는 두 개의 echo 구문을 사용하십시오. 콘솔에서 끝나는 문자열은 정확합니다. 메시지와 URL을 모두 포함합니다. 그러나 수신 한 실제 이메일에는 콘텐츠의 숫자 0이 포함되어 있습니다.

왜 그런가?

+0

을 변경해야하고이 * 살균 잊지 마세요 0

따라서 값으로 문자열을 변환뿐만 아니라, *를 수행하여 입력! http://xkcd.com/327/ – Aif

+0

나는이 게시물을 위해 그냥 제거했습니다. – maxedison

답변

7

PHP에서 문자열을 연결하는 연산자는 .이 아니며 +이 아닙니다. 플러스 기호는 수치 차례로 당신이

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

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

좋은 답변 찾기, +1. – Oldskool

+0

감사합니다. 나는 그것이 그렇게 작은 것이 될 것이라고 생각했습니다. 내 JS & PHP를 섞어 :) – maxedison

관련 문제