2012-02-25 21 views
1

私は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コールをセットアップしてください。

私はこのすべてに新しいです、誰かが私が間違ってやっていることを教えてくれますか、より良い実装を提案することができます。私は明日の午前の締め切りを持ってこれを行う。

+1

それはひどいです。 jQueryを使用してください – dynamic

+0

ちょうどそれがひどいと述べているのではなく、ひどいことを詳しく説明していますか? –

+0

クリッキー、私はひどいことがありました!更新 - もし誰かがこれを読んでいるなら、私が書いたすべてのものを無視して、AJAXのためにjQueryを使うと、おそらくあなたの人生は、私のようにgrottyのPHPを書くのではなく、バックエンドのためにある種のWebアプリケーションフレームワーク。私は初心者のためのCodeIgniterをお勧めします。 –

答えて

3

問題は、送信ボタンを使用していることです。 submitボタンはフォームを送信し、type = "submit"からtype = "button"に変更します。それは動作し、@juzeraliが示唆するように、jQueryを使用すると、そのコードが頭を痛めます。

+0

jQueryをAjax全体の部分に使うのはどういう意味ですか?あなたの入力をありがとう、私はフォームのサブミット型が問題だと思う –

+1

ボタンのサブミットの種類が問題ですが、全体的に、jQueryは、はるかに簡単にajaxを作成し、あなたにそれを使用するように本当に必要があります。多くの雇用主がそれを望んでいるので、あなたの履歴書にも素晴らしいです(ほとんどが何であるかは分かりませんが) – thenetimp

+0

偉大なええ、私は今それを並べ替えるでしょう –

0
if (isset($_POST['submitted'])) {/

コード内に迷路があります。

また、変更の種類は= =「ボタン」

onClickイベントハンドラを使用して、AJAXリクエスト、POSTする必要を作っているbecuase提出ピックアップしますを入力して「送信します」。

+0

あなたは迷いで何を意味するのか分からない? –

+1

その行末のスラッシュはそこに属しません。その構文エラーが発生します。 –

+0

あなたのコードに/があります。 – dynamic

2

第1、はい、ひどいです、jqueryを使用してください。第2に、送信ボタンのonclickを使用してajax呼び出しをバインドしても、デフォルトの動作が実行されるのを妨げていません。フォームは引き続き通常の方法で提出されます。

0

return false;スクリプトの最後に、通常の方法で送信しないようにします。

関連する問題