2012-11-28 5 views
1

jQuery에서 멍청한 놈이긴하지만 빨리 배우세요.jquery - 변수에서 "@"를 보내십시오

ive $ .post를 사용하여 HTML 양식의 값을 PHP 파일로 보냈습니다. 그리고 모든 사람들은 전자 메일 주소를 입력 할 때까지 "@"기호를 사용합니다 (모두 해당 기호를 사용).

내 jquery로 실험을 많이하고 있습니다. 그리고 무슨 일을하려고하는 HTML에서 양식 태그를 사용하지 않습니다.

Meh, 코드를 읽으십시오. 내가 무슨 뜻인지 알게 될거야. 그것은 서사시 TL하지 그래서 나는 모든 검증 및 오류보고를 복용 ​​해요 : DR 읽고 ...

<table id='contactform'> 
    <tr> 
     <td> 
      <label for='name'>Name</label> 
      <input id='name' type='text'> 
     </td> 
     <td> 
      <label for='phone'>Phone</label> 
      <input id='phone' type='tel'> 
     </td>  
    </tr> 
    <tr> 
     <td colspan='2'> 
      <label for='email'>Email</label> 
      <input id='email' type='email'> 
     </td> 
    </tr> 
    <tr> 
     <td colspan='2'> 
      <label for='message'>Message</label> 
      <textarea id='message'></textarea> 
     </td> 
    </tr> 
    <tr> 
     <th colspan='2'> 
      <button id='sendmessage'>SEND MESSAGE</button> 
     </th> 
    </tr> 
</table> 

JS, 마이너스 유효성 검사 ...

$(document).ready(function() { 
$("input#name").focus(); 
$("button#sendmessage").click(function() { 
    $("table#contactform").hide(); 
    $("div#popin").show(); 
    $("div#popin").html("<img src='images/loader.gif'>"); 
    sendmessage(); 
}); 
}); 

function sendmessage() { 
$.post(
    "sendmessage.php", 
    {nameval:$("input#name").val(), phoneval:$("input#phone").val(), emailval:$("input#email").val(), messageval:$("textarea#message").val()}, 
    function(data) { 
     if (data == true) { 
      $("div#popin").html("<p>We have received your message and will reply asap</p>"); 
     } 
     else { 
      $("div#popin").html("<p>Something went wrong! Please contact [email protected]******</p>"); 
     } 
    } 
); 
} 

그래서, 모든 것을 가져가 php 파일을 잘 보냈습니다. 게시물 값을 읽고, 저에게 이메일을 보내고, 이메일에 "@"이 올 때까지 js에 'true'데이터를 반환합니다 !!!

내가 serialize_data()를 사용할 수 있다는 것을 알고 있습니다. 또는 무엇이든간에 사용할 수 있지만 양식을 사용하지 않기를 바랍니다. 참으로 아, 그리고이 일을 ...

var emailval = $("input#email").val().replace("@", "(at)"); 
$.post(
    "funcs/contact.php", 
    {nameval:$("input#name").val(), phoneval:$("input#phone").val(), emailval:emailval, messageval:$("textarea#message").val()}, 

하지만 PHP 파일에없는 str_replace를 사용할 때 내가 함께 "@"를 대체 상관없이, 그냥 다시 나옵니다.

어디에서 내가 잘못 될지 아는 사람이 있습니까?

여기 당신은에 encodeURIComponent를 볼 수

<?php 
$name = $_POST["nameval"]; 
$phone = $_POST["phoneval"]; 
$email = $_POST["emailval"]; 
$message = $_POST["messageval"]; 
$emailbody = "Name - $name\nPhone - $phone\nEmail - $email\n\n$message"; 
$recipient = "[email protected]*****"; 
$subject = "contact form"; 
$result = mail($recipient, $subject, $emailbody, "From:$email"); 
if ($result) { 
    echo true; 
} 
else { 
    echo false; 
} 
?> 
+0

이 그것을 게시하기 전에 이메일을 탈출 해보십시오. 'escape (emailval)' – phpisuber01

+1

마지막 몇 줄이 나를 혼란스럽게합니다. 내가 'PHP에서 str_replace를 사용할 때 다시 중단'이란 무엇을 의미합니까? PHP에서 str_replace는 단지 문자열을 반환합니다. 아무것도 거기에서 부서지기 위해 없다. @가 문자열 일 때 작동하지 않는 것은 무엇입니까? 내 생각 엔 문제는 PHP 코드입니다. contact.php에 print_r ($ _ POST) 만 있으면 출력은 어떻게됩니까? ? –

+0

내 말은, 나는 js에 replace()를 사용하고 나서 PHP에서 str_replace를 사용하여 PHP를 다시 바꿔서 'true'를 반환하지 않는다. – pkt666

답변

0

... PHP는()의 자바 스크립트 방법, 서버 측에서 그것을 디코딩 할 필요가 없습니다 :

emailval:encodeURIComponent($("input#email").val()) 
관련 문제