0

簡単なメールを送信する必要がある簡単なフォームを修復しようとしています

JavaScript エラーは発生しませんが、ajax リクエストは発生しません。こことグーグルで多くの回答を検索しましたが、私のケースを助けるものはありませんでした。

ここにフォームhtmlコード

<form method="post" id="signupform">    
<input type="text" name="name" id="name" placeholder="Nimi"><br>
<input type="email" name="email" id="email" placeholder="sähköposti@osoite.com"><br>
<p><a href="#" id="send"><b>Ilmoittaudu</b></a></p>
</form>
<div id="response"></div>

これは jquery の検証と送信コードです。

<script>
/* <![CDATA[ */
$(document).ready(function(){
    $("#countdown").countdown({
        date: "13 october 2013 12:00:00", <!--set website launch date and time here-->
        format: "on"
        },
        function() {
            // callback function
        });
    var left = $('.newsletter').offset().left;
    $("#subscribe").click(function(event){
        $(".newsletter").show().animate({ left : left }, { duration: 1000 });
        event.preventDefault();
        return false;               
    });
    $(".close1").click(function(event){
        $(".newsletter").animate({ left : "110%" }, { duration: 1000 });
        event.preventDefault();
        return false;               
    });
    $("#send").click(function(event){
        event.preventDefault();
        var cname = $("#signupform").find("#name").val();
        var cemail = $("#signupform").find("#email").val();
        var errcount=0;
        if(cname.length < 1) {      
            $(this).parent().find("#name").addClass("error");
            errcount = 1;
        } else
           $(this).parent().find("#name").removeClass("error");
        var emailRegex = new RegExp(/^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$/i);
        var valid = emailRegex.test(cemail);
        if (!valid) {
            $(this).parent().find("#email").addClass("error");
            errcount = 1;
        } else
            $(this).parent().find("#email").removeClass("error");
        if (errcount === 0 ) {
            alert('noerror');
            //form submitted succesfully
            $.ajax ({
                type: "POST",
                url: 'send.php',
                data: {
                    name: cname,
                    email: cemail
                },
                processData: false,
                async: false,
                success: function(response) {
                    alert('success');
                    if (response == 'Kaavake ei ole täytetty oikein') {
                        $('#response').html(response);  
                    } else {
                        $('#response').html(response);
                        $('#response').fadeIn('slow');                  
                    }
                },
                error: function(xhr, text, error) {
                    alert(text);
                    alert(error);
                }                   
            });            
        } else {          
            return false;
        }
    }); 
    $("a[data-rel^='prettyPhoto']").prettyPhoto({deeplinking:false});
    $(window).resize(function(){
        var height=$('.activeslide').height();
        var sidebarheight=$('.sidebar').height();
        $('.sidebar').css('min-height',height);
    }); 
    $(window).resize();
});
/* ]]> */
</script>

エラーなしのアラートは表示されますが、成功したアラートは表示されず、chrome dev-tools のネットワークで ajax アクティビティが表示されません。

send.php のコード

<?php

$subject = "Uusi ilmoittautuminen";
$error = 0;
$sendto = 'email@yahoo.com';
print_r($_POST);
if (!empty($_POST)) {
    //validate and strip user data
    if (!empty($_POST['name'])) {
        $name =  htmlspecialchars(strip_tags($_POST['name']));
    } else { 
        $error = 1; 
    }
    if (!empty($_POST['email'])) {
        $email =  htmlspecialchars(strip_tags($_POST['email']));
    } else { 
        $error = 1; 
    }   
    if ($error == 0) {
        //SENDING SECTION
        //prepare body
        $namesender = 'Yhteydenotto';
        $header  = "MIME-Version: 1.0" . "\r\n".
            "Content-type: text/plain; charset=utf-8" . "\r\n".
            "From:Yhteydenotto < noreply@mail.com >\r\n" .
            "Reply-To:".$name." <".$email.">\r\n".
            "X-Mailer: PHP/" . phpversion();
        $body = "Uusi ilmoittautuminen\n\nNimi: ".$name."\n\nSähköposti: ".$email."";
        //prepare subject
        $newsubject='=?UTF-8?B?'.base64_encode($subject).'?=';

        //send email
        $mailresult = mail($sendto, $newsubject, $body, $header);

        die("<p>Kiitos ilmoittautumisestasi!</p>");

    } else {
        echo 'Kaavake ei ole täytetty oikein';
        die;
    }

} else { echo 'no direct access allowed'; }
4

3 に答える 3

2

return false;成功メソッドの後に何をしますか? それを取り除いたほうがいい。url: 'send.php';さらに、通常のコンマの後にセミコロンがあります。
すべてが正しく見えることを除いて。

この種のエラーを見つけるには、コンソールをチェックしてください(私は思う)、すべてのブラウザを使用できます。警告とエラーがログに記録されます。

http://jsfiddle.net/EvXgZ/2/そこには、jsfiddleで動作するように宛先URLを変更する必要があったことを追加した作業バージョンがあります。

あなたのajax呼び出しは次のようになります

$.ajax ({
  type: "POST",
  url: 'send.php',
  data: {
    'name': cname,
    'email': cemail
  },
  async: false,
  success: function(response) {
    alert('success');
    if (response == 'Kaavake ei ole täytetty oikein') {
      $('#response').html(response);  
    } else {
      $('#response').html(response);
      $('#response').fadeIn('slow');                  
    }
  },
  error: function(xhr, text, error) {
    alert(text);
    alert(error);
  }
});

実際のところ、このバージョンは機能し//、貼り付けられたコードの前にすべての混乱が生じました。これはさらに 1 行に貼り付けられたため、決して実行されませんでした。注意すべきもう 1 つの重要な点は、js ファイルを開発および変更する場合は、それらがキャッシュからクリアされていることを常に確認する必要があるため、Web サイトにアクセスしてテストすると、実際に最新バージョンを Web サイトにロードすることになります。

于 2013-06-25T10:15:02.350 に答える
0

構文エラー

$("#send").click(function() {
    var cname = $("#signupform").find("#name").val();
    var cemail = $("#signupform").find("#email").val();
    var errcount = 0;
    if (cname.length < 1) {
        $(this).parent().find("#name").addClass("error");
        errcount = 1;
    } else
        $(this).parent().find("#name").removeClass("error");
    var emailRegex = new RegExp(/^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$/i);
    var valid = emailRegex.test(cemail);
    if (!valid) {
        $(this).parent().find("#email").addClass("error");
        errcount = 1;
    } else
        $(this).parent().find("#email").removeClass("error");

    if (errcount === 0) {
        alert('noerror');
        // form submitted succesfully
        $.ajax({
            type : "POST",
            url : 'send.php',
            data : {
                name : cname,
                email : cemail
            }, //Missing , here
            processData : false,
            async : false,
            success : function(response) {
                alert('success');
                if (response == 'Kaavake ei ole täytetty oikein') {
                    $('#response').html(response);
                } else {
                    $('#response').html(response);
                    $('#response').fadeIn('slow');
                }
            },
            error : function(xhr, text, error) {
                alert(text);
                alert(error);
            }
        });
    } else {
        return false;
    }
});
于 2013-06-25T10:36:20.693 に答える