3

ラジオ付きのフォームがあり、jq/$.ajax から始めて検証を試みてから、php に情報を投稿します。

フォーム.php

<tr>
  <td class="h"><span class="txt_wht">t1</span></td>
        <input type="hidden" name="gm[0]" value="t1" />
  <td class="vs"><span class="txt_yel_sm">vs</span></td>
  <td class="a"><span class="txt_wht">t2</span></td>
        <input type="hidden" name="gm[1]" value="t2" />

  <td><input type="radio" name="g1" value="a" /></td>
  <td><input type="radio" name="g1" value="b" /></td>
  <td><input type="radio" name="g1" value="c" /></td>
  </tr>
<tr>
  <td class="h"><span class="txt_wht">t1</span></td>
        <input type="hidden" name="gm[0]" value="t1" />
  <td class="vs"><span class="txt_yel_sm">vs</span></td>
  <td class="a"><span class="txt_wht">t2</span></td>
        <input type="hidden" name="gm[1]" value="t2" />

  <td><input type="radio" name="g2" value="a" /></td>
  <td><input type="radio" name="g2" value="b" /></td>
  <td><input type="radio" name="g2" value="c" /></td>
 </tr>

検証.js

$(document).ready(function () {
    //global vars

    form.submit(function () {
        if (validate1() && validate2()) {
            //vars
            var exst_email = $('#exst_email').attr('value');
            var g1 = $("input[name='g1']:checked").attr('value');
            //more vars

            $.ajax({
                type: "post",
                url: "scripts/sbmt.php",
                data: "exst_email=" + exst_email,
                success: function (exst_rsp) {

                    //if its not exist
                    if (exst_rsp == "not_exist") {
                        valInfo.text("Error1!");
                        valInfo.addClass("error");
                        email_reg_err = true;
                    } else {
                        valInfo.text("");
                        valInfo.removeClass("error");
                        email_reg_err = false;
                    }
                    //more validation with error msgs

                    //validate 1 & validate 2 functions

およびsbmt.php

session_start();
// connect to db
require_once('conn.php');

if($stmt = $mysqli->prepare('SELECT email FROM table WHERE email=?')){
   $stmt->bind_param("s", $_POST['exst_email']); 
   $stmt->execute();
   $stmt->store_result();

   $numRows = $stmt->num_rows();
   if($numRows < 1){
       echo 'not_exist';
       exit();
   }
   $stmt->close();
}
//more validation

今、

  1. Dreamweaver のおかげで、タイプミスや閉じられていないタグがないことがわかっています。

  2. 私の検証 1 & 2 関数は正常に動作しています。

  3. 火炎虫のせいで、

    a) 自分のデータが sbmt.php に投稿されていることを知っています

    b)エラーメッセージを表示するための応答がありません。

まったく同じ方法(別のjs/phpファイル)を使用して、さらに3つのフォーム(重要な場合のみテキストエリア)を検証していますが、正常に機能しています!

ここで何が間違っている可能性があるかについて何か提案はありますか?

4

2 に答える 2

1

送信機能内で試すことができます:

form.submit(function(e){

   e.preventDefault(); // to prevent the form from submitting itself

  // you all validation code

});

ノート

投稿されたデータにはhereのようなキーが含まれていますが、 は含まれていないため$_POST['email']PHPコードには があるはずです。$_POST['exst_email']AJAXexst_emaildata: "exst_email="+ exst_email, email

したがって、あなたPHPが正しければ、次のようにデータを送信する必要がありますdata: "email="+ exst_email

于 2012-07-20T05:54:31.083 に答える
0

解決した

理由はわかりませんが、ここに修正があります:

現時点では値を使用していないため、sbmt.php に<input type="hidden">値を渡していませんでした。

しかし、私はそれらも投稿して、それが役立つかどうかを確認することにしました. そしてそれは働いた!

于 2012-07-20T08:35:24.213 に答える