私はPOSTとEメールエントリをHTMLフォームからPHPスクリプトに電子メールで送信して結果をデータベースに保存しようとしています。スクリプトは、ユーザーが無効な電子メールアドレスなどを入力した場合にエラーメッセージを表示する責任も負います.AJAX呼び出しを含むプロセス全体が欲しいので、ユーザーが送信するたびにページを再読み込みする必要はありませんボタンをクリックします。AJAXを使用したHTMLフォームのPHPコールへの投稿
今のところ、ユーザーがフォームの送信ボタンを押すたびに、ページがリフレッシュされ、私はajax呼び出しから応答が得られますが、リフレッシュのためすぐに上書きされます。
は、ここに私のHTMLとJavaScript/AJAXです:
<div id="emailform">
<form method="post"><!--action="planethome.php"-->
<input class="emailinput" type="text" name="email" maxlength="80" placeholder="enter your email address"/>
<input class="submitemailbutton" name="send_button" type="submit" value="Send" onClick="ajaxFunction()/>
<input type="hidden" name="submitted" value="TRUE"/>
</form>
</div>
<div id="errororsuccess">
</div>
<!--ajax stuff:---------------------------------->
<script language="javascript" type="text/javascript">
//Browser Support Code"
function ajaxFunction(){
var ajaxRequest; // The variable that makes Ajax possible!
try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
// Something went wrong
alert("Ajax is struggling in your browser.");
return false;
}
}
}
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
document.getElementById('errororsuccess').innerHTML = ajaxRequest.responseText;
}
}
// Create a function that will receive data sent from the server
ajaxRequest.open("POST", "addemailtodatabase.php", true);
ajaxRequest.send(null);
}
とここに私のPHPです:
<?php
require_once ('planetconfig.php');
if (isset($_POST['submitted'])) {/
require_once (MYSQL);
$email = FALSE;
$trimmed = array_map('trim', $_POST);
if (!empty($_POST['email']))
{
if (preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',$_POST['email'])) {
$email = mysqli_real_escape_string ($dbc, $trimmed['email']);
} else {
echo "Invalid";
}
} else {
echo "You need to enter an email address";
}
if ($email) {
$q = "INSERT INTO planetemail (email, time) VALUES (AES_ENCRYPT('$email', 'password'), NOW())";
$r = mysqli_query ($dbc, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($dbc));
if (mysqli_affected_rows($dbc) == 1) {
echo "Thanks, we'll be in touch";
exit();
} else {
echo '<p class="error">We\'re sorry, something has gone wrong.</p>';
}
}
mysqli_close($dbc);
}
?>
私はそれが私のPOSTメソッドまたはどのように私が何かだと確信しています私のajaxコールをセットアップしてください。
私はこのすべてに新しいです、誰かが私が間違ってやっていることを教えてくれますか、より良い実装を提案することができます。私は明日の午前の締め切りを持ってこれを行う。
それはひどいです。 jQueryを使用してください – dynamic
ちょうどそれがひどいと述べているのではなく、ひどいことを詳しく説明していますか? –
クリッキー、私はひどいことがありました!更新 - もし誰かがこれを読んでいるなら、私が書いたすべてのものを無視して、AJAXのためにjQueryを使うと、おそらくあなたの人生は、私のようにgrottyのPHPを書くのではなく、バックエンドのためにある種のWebアプリケーションフレームワーク。私は初心者のためのCodeIgniterをお勧めします。 –