2016-03-26 9 views
-4

私はご連絡フォーム持っている:私はそれがこのAJAXコードを使用して、私のメールPHPスクリプトを呼び出したいこのスクリプトはなぜ読み込まれませんか?

<form id="contactus" name="contactus" action="html_form_send1.php" method="post"> 
    <label for="name">Name:</label><br /> 
    <input type="text" id="name" name="name" maxlength="50" size="59" autofocus required/><br /><br /> 

    <label for="email">E-Mail Address:</label><br /> 
    <input type="email" id="email" name="email" maxlength="50" size="59" required/><br /><br /> 

    <label for="question">Question:</label><br /> 
    <textarea id="question" name="question" maxlength="1000" cols="50" rows="6" required></textarea><br /><br /> 

    <input class="c1_scButton" type="submit" id="submit" name="submit" value="Send" /> 
</form> 

を:

var msg = ""; 
name = $("#name").val(); 
email = $("#email").val(); 
question = $("#question").val(); 

//validation phase 

function isValidEmailAddress(emailAddress) { 
    var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([az]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i); 
    return pattern.test(emailAddress); 
}; 

function validate(e) { 
    if (name == "") { 
    msg = " valid name"; 
    } 

    if (!isValidEmailAddress(email)) { 
    msg = msg + " valid email address"; 
    } 

    if (question == "") { 
    msg = msg + " valid question or comment"; 
    } 
} 

// on submit, Validate then post to PHP mailer script 
$(function() { 
    $("#contactus").on('submit', function(e) { 
    e.preventDefault(); 
    validate(e); 
    if msg != "" { 
     e.preventDefault(); 
     $("#alert").html "Please enter a" + msg; 
    } else { 
     $.post('/html_form_send1.php', $(this).serialize(), function(data) { 
     $('#alert').css(color: "black") 
     $('#alert').html("<h2>Thank you for contacting us!</h2>") 
      .append("<p>We will be in touch soon.</p>"); 
     }).error(function() { 
     $('#alert').css(color: "red") 
     $('#alert').html("<h2>Something went wrong. Your Question was not submitted. /n</h2>").append("<p>Please try again later or email us at <a href=href=" 
      mailto: [email protected] allegroaffiliates.com ? Subject = Contact Us Form " target=" 
      _top ">[email protected]</a> </p>"); 
     }); 
    }; 
    }); 
}); 

スクリプトが別の後にHTMLページの下部に呼ばれていますスクリプトですが、ロードされていません。私はそれがコードエラーのためだと思うが、私はエラーを見つけることができません。誰も私にそれを読み込まないアイデアを与えることができますか?

サイドノート:HTML5がスクリプトを検証することはわかっていますが、HTML5が利用できない場合の検証が行われています。

ありがとうございました。

+2

コンソールのエラーを確認しましたか? –

+0

いくつかの構文エラーがあります。 'もしmsg!=" "{'または '$("#alert ").html" "+ msg;'を入力してください。コンソールは何が間違っているかを正確に教えてくれます。 – Marvin

+0

ここで強調表示されている構文が混乱しているという事実は、コードにいくつか間違っていることを示すはずです。降下エディタまたはIDEを使用すると、そのような問題は発生しません。 – Pevara

答えて

0

いくつかのトラブルシューティングの提案:その代わりにショートカットコード$.post()を用いる

(1)AJAXプロセッサフ​​ァイルを指定し、いずれかのこの$.post('html_form_send1.php'又はこの$.post('./html_form_send1.php'なく、この$.post('/html_form_send1.php'

(2)を使用あなたはそれでかなり良いですまでの方法の完全な形式:

var varvalue = $('#first_name').val(); 
var nutherval = $('#last_name').val(); 
$.ajax({ 
    type: 'post', 
    url: 'your_secondary_file.php', 
    data: 'varname=' +varvalue+ '&lname=' +nutherval, 
    success: function(d){ 
     if (d.length) alert(d); 
    } 
}); 

(3)作業している残りの部分は、その後、あなたが知っているときというの仕事まで無効に検証ルーチン他のすべてが正しく動作しています

(4)AJAXプロセッサフ​​ァイルhtml_form_send1.phpを変更して、AJAXが動作していることを確認してください。次に、応答を取得したら、送信する変数をエコーバックするように変更します。それからそれを最終的な所望の製品に組み込む。しかし、最初に、このような単純な死者何か、:

your_secondary_file.php:

<?php 
    $first_name = $_POST['varname']; 
    $last_name = $_POST['lname']; 
    echo 'Received: ' .$first_name .' '. $last_name; 
    die(); 

(5)の代わりに.serialize()を使用するのは、最初はただ手動で1つのまたは2つのフィールドの値を取得し、最初の作業をすることを取得します。 .serialize()はJSONデータを生成しますが、この答えのサンプルコードのように、単純なメソッドは直接ポストされた値です。まずそれを稼働させてから最適化してください。

(6)AJAXコードブロック内dataType:パラメータはコードがない PHP側に行くコードため、PHP側からバック来るためであることに留意されたいです。また、デフォルト値はhtmlであることに注意してください。JSONオブジェクトを返送しない場合は、そのパラメータをそのままにしておいてください。

(7)上記のAJAXとPHPのコードサンプルでは、​​JavaScriptの変数名、AJAXコードブロックでの参照方法、およびPHP側での受信方法の相関関係に注意してください。私はあなたがvar name => var valueのペアリングを完全に行うことを可能にするために選んだ名前で非常に熟考しました。

たとえば、IDがfirst_nameの入力フィールドは、varvalue(ダム名ですが意図的)という変数に格納されています。そのデータはvarnameという名前の変数としてAJAXコードブロックで送信され、$_POST['varname']としてPHP側で受信し、最終的に$first_name


レビューsome simple AJAX examplesとしてPHPに保存されている - あなたのシステムにそれらをコピーして、一緒にプレイそれらは少しです。

+0

私はこれを試します、ありがとう。 –

+0

@DavidBrabson私の答えにもう少し情報を加えました。レビューしてください。 – gibberish

関連する問題