0

誰かが私を助けてくれるのではないかと思います。

しばらくの間、フォームをセットアップし、AJAX を使用してユーザー入力を mySQL データベースに送信する方法を示すチュートリアル/記事を探していました。

これはデータベースにデータを送信する方法を示すものではありませんが、この記事は良い出発点を提供してくれました。また、フォームに組み込みたいオンライン メッセージに関する「ルック アンド フィール」も提供してくれました。 .

サンプル スクリプトの調整を開始しましたが、データをデータベースに送信するのが困難です。

このセクションを変更したフォームでは:

   $.ajax( {
          url: contactForm.attr( 'action' ) + "?ajax=true",
          type: contactForm.attr( 'method' ),
          data: contactForm.serialize(),
          success: submitFinished
        } );

  }

 $.ajax( {
      url: contactForm.attr( 'savecontact.php' ) + "?ajax=true",
      type: contactForm.attr( 'post' ),
      data: contactForm.serialize(),
      success: submitFinished
    } );
  }

PHP スクリプトでは、これを次のように変更しました。

<?php

// Read the form values
$success = false;
$senderName = isset( $_POST['senderName']);
$senderEmail = isset( $_POST['senderEmail']);
$message = isset( $_POST['message']);


if ( $senderName && $senderEmail && $message ) {

    $query = "INSERT INTO `contact` (senderName, senderEmail, message) VALUES ('$senderName', '$senderEmail', '$message')";  
mysql_query($query) or die(mysql_error());
}           
// Return an appropriate response to the browser
if ( isset($_GET["ajax"]) ) {
  echo $success ? "success" : "error";
} else {
?>
<html>
  <head>
    <title>Thanks!</title>
  </head>
  <body>
  <?php if ( $success ) echo "<p>Thanks for sending your message! We'll get back to you shortly.</p>" ?>
  <?php if ( !$success ) echo "<p>There was a problem sending your message. Please try again.</p>" ?>
  <p>Click your browser's Back button to return to the page.</p>
  </body>
</html>
<?php
}
?>

私が抱えている問題は、フォームを送信すると、sendingメッセージが画面に表示され、このメッセージにスタックし続け、データがデータベースに送信されないことです。理由は本当にわかりません。

私の経験不足のため、私が望む結果を達成するためのより簡単な方法があるかもしれませんし、これを単純化しすぎているかもしれません.私が間違っているところ。

多くの感謝と親切な敬意

4

2 に答える 2

1

変化する:

contactForm.attr( 'savecontact.php' )

に:

contactForm.attr( 'action' )

type: contactForm.attr( 'post' ),

type: contactForm.attr( 'method' ),

attrタグ属性の読み取りに使用されるため。actionこの場合の form タグの属性です。

methodフォームの属性に応じて、$_POSTまたは$_GET配列を使用して AJAX 経由で送信された値を取得するか、使用することもできます$_REQUEST(推奨される方法ではありません) 。

于 2012-06-25T15:11:54.760 に答える
0

Blaster の回答に加えて、php コードにも修正が必要です。

$senderName = isset( $_POST['senderName']);
$senderEmail = isset( $_POST['senderEmail']);
$message = isset( $_POST['message']);

ここでは、これらの変数を、実際の値ではなく、POST 変数が設定されているかどうかのブール値に設定しています。

$senderName = mysql_real_escape_string($_POST['senderName']);
$senderEmail = mysql_real_escape_string($_POST['senderEmail']);
$message = mysql_real_escape_string($_POST['message']);

これでうまくいくはずですが、SQL インジェクションに対して脆弱です。mysql_*関数は非推奨になったため、PDO または MySQLi と準備済みステートメントを学習することをお勧めします。詳細については、PHP マニュアルのこのページを参照してください。

于 2012-06-26T09:04:46.717 に答える