0

ここのチュートリアルで作業しています: http://designwoop.com/2012/07/tutorial-coding-a-jquery-popup-modal-contact-form/とデータを正しく送信するフォーム。ただし、送信をクリックすると、フォームには確認メッセージではなく「送信中」メッセージが表示されます。これは、ローカルおよび開発環境でテストしたときに発生します。コンソールにエラー メッセージが表示されません。

ajax を扱うのはこれが初めてで、jQuery/JavaScript の初心者です。ここで何が問題なのかわかりません。データを真に読み取っていないようです。True を False に変更して何が起こるかを確認しましたが、まだ機能しません。誰か助けてくれませんか?

参考までに、1.3.2 jQuery ライブラリを既に呼び出しているサイトでこれを実装していて、参照を削除できないため、noConflict を使用する必要があります。古いライブラリのみを参照すると、これは機能しません。

私の目標は、ユーザーが Web サイトに入ったときにポップアップするモーダルを作成することですが、Cookie が設定されている場合や、ユーザーが入力したページに特定の div が既に存在する場合は作成しません。

スクリプトは次のとおりです。

          <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
          <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
          <script type="text/javascript" src="/wcsstore/CVWEB/images/home/js/jquery.fancybox.js?v=2.0.6"></script> 

    <script type="text/javascript">
    var jQuery_1_7_2 = jQuery.noConflict(true);
    function validateEmail(email) { 
        var reg = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
        return reg.test(email);
    }
    jQuery_1_7_2(document).ready(function(){
            var emailFormExists = jQuery_1_7_2('#e2ma_signup_form');
            if (document.cookie.indexOf('visited=true') == -1 && !(emailFormExists.length)){
                var fifteenDays = 1000*60*60*24*15;
                var expires = new Date((new Date()).valueOf() + fifteenDays);
                document.cookie = "visited=true;expires=" + expires.toUTCString();
                jQuery_1_7_2.fancybox({width:"100%", inline:true, href:"#inline"});
            }
            else
            {
            jQuery_1_7_2('#e2ma_signup_form').length
                var fifteenDays = 1000*60*60*24*15;
                var expires = new Date((new Date()).valueOf() + fifteenDays);
                document.cookie = "visited=true;expires=" + expires.toUTCString();  
            }
        jQuery_1_7_2("#contact").submit(function() { return false; });


    jQuery_1_7_2("#send").on("click", function(){
        var emailval  = jQuery_1_7_2("#email").val();
        var mailvalid = validateEmail(emailval);

        if(mailvalid == false) {
            jQuery_1_7_2("#email").addClass("error");
        }
        else if(mailvalid == true){
            jQuery_1_7_2("#email").removeClass("error");
        }

        if(mailvalid == true) {
            // if both validate we attempt to send the e-mail
            // first we hide the submit btn so the user doesnt click twice
            jQuery_1_7_2("#send").replaceWith("<em>sending...</em>");

            jQuery_1_7_2.ajax({
                type: 'POST',
                url: 'http://lcoawebservices.com/scripts/email-opt-in.php',
                data: jQuery_1_7_2("#contact").serialize(),
                success: function(data) {
                    if(data == "true") {
                        jQuery_1_7_2("#contact").fadeOut("fast", function(){
                            jQuery_1_7_2(this).before("<p><strong>Thanks for opting in!</strong></p>");
                            setTimeout("jQuery_1_7_2.fancybox.close()", 1000);
                        });
                    }
                }
            });
        }
    }); 
                });
            </script>

HTMLは次のとおりです。

            <div id="inline">
                <h2>Join the our mailing list!</h2>

                <form id="contact" name="contact" action="#" method="post">
                    <label for="email">Your E-mail</label>
                    <input type="email" id="email" name="email" class="txt">
                    <button id="send">Send E-mail</button>
                </form>
            </div>  

これがphpです(私も初めてです)

        <?php
        $sendto   = "llantz@lecreuset.com";
        $usermail = $_POST['email'];
        $content  = nl2br($_POST['msg']);

        $subject  = "New Feedback Message";
        $headers  = "From: " . strip_tags($usermail) . "\r\n";
        $headers .= "Reply-To: ". strip_tags($usermail) . "\r\n";
        $headers .= "MIME-Version: 1.0\r\n";
        $headers .= "Content-Type: text/html;charset=utf-8 \r\n";

        $msg  = "<html><body style='font-family:Arial,sans-serif;'>";
        $msg .= "<h2 style='font-weight:bold;border-bottom:1px dotted #ccc;'>New User Feedback</h2>\r\n";
        $msg .= "<p><strong>Sent by:</strong> ".$usermail."</p>\r\n";
        $msg .= "<p><strong>Message:</strong> ".$content."</p>\r\n";
        $msg .= "</body></html>";


        if(@mail($sendto, $subject, $msg, $headers)) {
            echo "true";
        } else {
            echo "false";
        }

        ?>
4

1 に答える 1