1

更新 2 : いくつかのテストを行った後、ページに jQuery が読み込まれていると機能しないことがわかりました。私のページは jQuery に依存しています。どうすればよいですか?

更新: 問題のあるページはこちら、動作中のテスト ページはこちらです。


お問い合わせフォームを作っていますが、こんな感じです

<form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="../sendemail.php">
              <div class="row-fluid">
                <div class="span5">
                    <label>First Name</label>
                    <input name="first" type="text" class="input-block-level" required="required" placeholder="Your First Name">
                    <label>Last Name</label>
                    <input name="last" type="text" class="input-block-level" required="required" placeholder="Your Last Name">
                    <label>Email Address</label>
                    <input name="email" type="text" class="input-block-level" required="required" placeholder="Your email address">
                </div>
                <div class="span7">
                    <label>Message</label>
                    <textarea name="message" id="message" required class="input-block-level" rows="8"></textarea>
                </div>

            </div>
            <button type="submit" class="btn btn-primary btn-large pull-right">Send Message</button>
            <p> </p>

        </form>

派手すぎるものはありません。sendemail.php は次のようになります

<?php
header('Content-type: application/json');
$status = array(
    'type'=>'success',
    'message'=>'Email sent!'
);

$name = @trim(stripslashes($_POST['first']." ".$_POST['last'])); 
$email = @trim(stripslashes($_POST['email'])); 
$subject = "Monarc - Message From ".$name;
$message = @trim(stripslashes($_POST['message'])); 

$email_from = $email;
$email_to = 'xxx@xxx.xxx';

$body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message;

$success = @mail($email_to, $subject, $body, 'From: <'.$email_from.'>');

echo json_encode($status);
die;

メールは届きますが、postdata はメールで届きません。送信者として (不明な送信者) と表示され、本文は次のようになります。

名前:

Eメール:

件名: Monarc - 送信元メッセージ

メッセージ:

私は何を間違っていますか?

ありがとう!

4

2 に答える 2

0

フォームの値を投稿するには、ボタン タイプの代わりに入力タイプの送信を使用する必要があります

変化する:

<button type="submit" class="btn btn-primary btn-large pull-right">Send Message</button>

に:

<input type="submit" class="btn btn-primary btn-large pull-right" value="Send Message">
于 2014-04-21T07:51:17.830 に答える
0

補足情報として、このフォームは次の JavaScript ファイルを使用します。

jQuery(関数($) {

//Ajax contact var form = $('.contact-form'); form.submit(function () { $this = $(this); $.post($(this).attr('action'), function(data) { $this.prev().text(data.message) .fadeIn().delay(3000).fadeOut(); },'json'); false を返す; });

//Goto Top $('.gototop').click(function(event) {
event.preventDefault(); $('html, body').animate({ scrollTop: $("body").offset().トップ}、500);}); //トップに戻る

});

別のフォーラムで検索すると、これを修正する方法が見つかりました。php ファイルに次のコードを追加するだけです。

$headers = "From: mail <$email_from>\r\n";
$headers .= "MIME-Version: 1.0" ."\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

$success = @mail($email_to, $subject, $body,'From: <'.$email_from.'>'); の「@」を削除します。

「main.js」ファイルでは、コードは .post() メソッドでデータを提供していません。すべてのフォーム フィールド/値を取得するには、 $(this).serialize() を追加する必要があります。

テストされていませんが、動作するはずです -

$.post($(this).attr('action'),$(this).serialize(), function(data) {

問題の解決に役立つことを願っています

于 2014-10-22T20:53:55.470 に答える