0

HTML フォーム + jquery + php を使用してデータベースを更新しようとしています

フォームの [送信] ボタンをクリックすると機能しますが、クリックするたびにデータベースに同じレコードが 2 つ追加されます。

何が問題なのかがわからないため、ここで使用しているスクリプト全体を投稿しています。誰かが問題を見つけることができれば、それを指摘してください。

ここに私が使用しているスクリプトがあります

HTML

<div id="result" class="results"></div>
<form id="person-form" class="person-form" method="post">
 <fieldset>
  <legend><strong>Add a new member</strong></legend>
  <table>
  <tr><td><label for="Name" >Name</label></td>
  <td colspan="2"><input type="text" name="name" value="Enter the Name, 55 char max." /></td></tr>
  <tr><td><label for="email">Email</label></td>
  <td colspan="2"><input type="text" name="email" value="Enter the email" /></td></tr>
  <tr><td><label for="subscribe">Subscribe</label></td>
  <td><input type="checkbox" name="subscribe" value="Yes" /></td>
  <td><input type="submit" value="Add member" id="add-member" class="add-member"/></td></tr>
  </table>
  <div style="clear:both;"></div>
 </fieldset>
</form>

jQuery

$("#add-url").live("click", function() {
    var name = $('input[name=name]').val();
    var email = $('input[name=email]').val();
    var subs = $('input[name=subscribe]:checkbox:checked').val();
    var data = 'name='+name+'&email='+email+'&subs='+subs;

    $.post(add_member_script.ajaxurl, data,  function(data) {
   $('#results').html(data);

});
  return false;
});

そしてPHP

$connect = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

if (!$connect){
    die('Could not connect: ' . mysql_error());
}
mysql_select_db(DB_NAME, $connect);


if (empty($_POST['name']) || empty($_POST['email'])){
    echo 'enter some value';
}  else {

      if($_POST['subs']== 'yes') {
        $sql="INSERT INTO $table (name, email, subs) VALUES ('$_POST[name]','$_POST[email]','$_POST[subs]')";
      } else {
        $sql="INSERT INTO $table (name, email) VALUES ('$_POST[name]','$_POST[email]')";
      }

    if (!mysql_query($sql,$con)){
        mysql_error();
    } else {
        list_links_table ();
    }
    mysql_close($con);
    die();
}
4

3 に答える 3

0

最後に見つけました。上に投稿したスクリプトにはまったくエラーがありません。問題は、私が 2 回登録した WordPress フックにあり、そのため、クリックごとに 2 つのリクエストを送信していました。私はそれを削除し、問題は解決しました。@Erenor Paz、@Mark Eirich、@slugonamission のご尽力に感謝します。これで、最初の WordPress プラグインが完成しました :)

于 2012-07-01T00:55:02.613 に答える
0

フォームは AJAX と「通常の」方法の両方で送信されているようです。onsubmit="return false"確認するには、form タグに次を追加します。

<form id="person-form" class="person-form" method="post" onsubmit="return false">

または、すべての JS を削除して、フォームが正常に送信されるようにし、重複が続くかどうかを確認することもできます。

于 2012-07-01T00:03:49.523 に答える
0

コメントで述べたよう<input type="button" value="Add member" id="add-member" class="add-member"/>に、「type=submit」の代わりに使用して、フォームが HTML 経由でアップロードされないようにすることをお勧めしますが、Javascript コードのみを使用します:)

于 2012-07-01T00:11:45.420 に答える