2012-02-23 22 views
0

ajaxを使用して、ajaxを使用してコンタクトフォームをインラインでリフレッシュすることに成功しました。 mysqlに送信されるデータを扱うのに少し難しかったです。これまでのことは、ajaxを使ってリフレッシュすることは意図されていないので、いくつかの作業が必要なことに感謝します。ここに私が持っているものがあります...そしてどんな助けもありがとう。ajaxを使用してデータを送信してリフレッシュする

フォーム

<form name="email_list" action=""> 

<p><strong>Your Email Address:</strong><br/> 
<input type="text" name="email" id="email" size="40"> 
<input type="hidden" name="sub" id="sub" value="sub"> 

<p><input type="submit" name="submit" value="Submit Form" class="email_submit"></p> 
</form> 

jQueryの

$(function() {  
$('.email_submit').submit(function() { 

var email = $("input#email").val(); 
      if (name == "") { 
      $("input#email").focus(); 
      return false; 
     } 
var sub = $("input#sub").val(); 
      if (name == "") { 
      $("input#sub").focus(); 
      return false; 
     }  

var dataString = $(this).serialize(); 

//alert (dataString);return false; 
/*$.ajax({ 
    type: "POST", 
    url: "mailing_list_add2.php", 
    data: dataString, 
    success: function() { 
     $('#display_block')      
     .hide() 
     .fadeIn(2500, function() { 
      $('#display_block'); 
     }); 
    } 
}); 
return false; 
});*/ 

}); 

PHP

<?php 
// connects the database access information this file 
include("mailing_list_include.php"); 

// the following code relates to mailing list signups only 
if (($_POST) && ($_POST["action"] == "sub")) { 

if ($_POST["email"] == "") { 
     header("Location: mailing_list_add.php"); 
     exit; 
    } else { 
     // connect to database 
     doDB(); 

     // filtering out anything that isn't an email address 
     if (filter_var(($_POST["email"]), FILTER_VALIDATE_EMAIL) == TRUE) { 
      echo ''; 
     } else { 
      echo 'Invalid Email Address'; 
      exit; 
     } 

     // check that the email is in the database 
     emailChecker($_POST["email"]); 

     // get number of results and do action 
     if (mysqli_num_rows($check_res) < 1) { 
      // free result 
      mysqli_free_result($check_res); 

      // cleans all input variables at once 
      $email = mysqli_real_escape_string($mysqli, $_POST['email']); 

      // add record 
      $add_sql = "INSERT INTO subscribers (email) VALUES('$email')"; 
      $add_res = mysqli_query($mysqli, $add_sql) 
         or die(mysqli_error($mysqli)); 
      $display_block = "<p>Thanks for signing up!</p>"; 

      // close connection to mysql 
      mysqli_close($mysqli); 
     } else { 
      // print failure message 
      $display_block = "You're email address - ".$_POST["email"]." - is already subscribed."; 
    } 
} 
} 

?> 
<html> 
<?php echo "$display_block";?> 
</html> 

**変更:)あなたは、サーバーからデータを欠場

答えて

1

のようないくつかの問題があります:

最初の部分のようなものになるようにするには、イベント(フォーム送信)するためにJavaScriptを添付する必要が
  1. $('form').submit(function() {

    あなたはすべての(正しい...)フォーム値ではなく、あなたのPHPを動作させるためだけの電子メールアドレスに送信する必要が
  2. $('form').submit(function() {

    var dataString = $(this).serialize(); 
    
+0

[OK]を、私は私が動作するように何か他のものを適応しようとしたと思うし、それが最善のアプローチではありません。ありがとう。 – Andy

+0

迷惑なのは、私はPHPの部分が正常に動作しており、コードが動作しているということです。 JQueryとは別に、私はページを爽やかにすることができません。挫折。 – Andy

+0

@Andyなぜあなたはajax呼び出し全体をコメントアウトし、フォームイベントハンドラから始めませんか?フォームが通常の方法で送信されるのを避けるには、フォームイベントハンドラからfalseを返す必要があることに注意してください。 – jeroen

0

を行った後、上記更新(削除yのHTMLタグ当社のサーバーのskript):

$.ajax({ 
     type: "POST", 
     url: "mailing_list_add.php", 
     data: dataString, 
     success: function(data) { 
      $('#email_add').html("<div id='response'></div>"); 
      $('#response').html("<h2>Successfully added to the database.")      
      .hide() 
      .fadeIn(2500, function() { 
       $('#response').html(data); 
      }); 
     } 
    }); 
関連する問題