我是jquery的菜鸟,但学得很快。
我一直在使用$ .post将值从html表单发送到php文件。每个人都在工作,直到输入的电子邮件地址包含“@”符号(当然他们都这样做)然后它会中断!
我正在尝试使用我的jquery。我试图做的不是使用html中的表单标签。
嗯,阅读代码。你会明白我的意思。我正在取出所有的验证和错误报告,所以这不是一个史诗般的故事:博士阅读......
<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 webmaster@******</p>");
}
}
);
}
所以,一切都会被发送到php文件。它读取帖子值,给我发电子邮件,将数据'true'返回给js ...直到电子邮件中有“@”!!!
我知道我可以使用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时,它会再次中断。
有谁知道我在哪里出错?
这是php ...
<?php
$name = $_POST["nameval"];
$phone = $_POST["phoneval"];
$email = $_POST["emailval"];
$message = $_POST["messageval"];
$emailbody = "Name - $name\nPhone - $phone\nEmail - $email\n\n$message";
$recipient = "webmaster@*****";
$subject = "contact form";
$result = mail($recipient, $subject, $emailbody, "From:$email");
if ($result) {
echo true;
}
else {
echo false;
}
?>
答案 0 :(得分:0)
您可以查看encodeURIComponent()javascript方法,无需在服务器端解码:
emailval:encodeURIComponent($("input#email").val())