1

私は jquery の初心者ですが、習得は早いです。

$.post を使用して、html フォームから php ファイルに値を送信しています。そして、入力された電子メール アドレスに「@」記号が含まれるまで、全員が作業を行います (もちろん全員が行います)。

私は私のjqueryをたくさん実験しています。私がやろうとしているのは、htmlでフォームタグを使用しないことです。

ええと、コードを読んでください。あなたは私が何を意味するかを見るでしょう。私はすべての検証とエラー報告を取り出しているので、壮大な 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 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;
}
?>
4

1 に答える 1

0

encodeURIComponent() javascript メソッドを見ることができます。サーバー側でデコードする必要はありません。

emailval:encodeURIComponent($("input#email").val())
于 2012-12-04T17:33:16.730 に答える