1

jQuery ajax経由で投稿変数をphp自身のドキュメントに送信しようとしていますが、送信後、投稿変数が設定されていません。

コード:

    if(isset($_POST['email']) && isset($_POST['pass'])){

     do something
    }
<form id="form_login_pv">

Email: <input type="text" name="email" id="email"><br>
Password: <input type="password" name="pass" id="pass">

<div class="send_login_button_pv">Login</div>

</form>

<script type="text/javascript">

$('.send_login_button_pv').click(function(e){

  $.ajax({
    type: "POST",
    url: "index.php",
    data:$('#form_login_pv').serialize(),
    success: function(response){
                alert("mensaje enviado");

        }

});
});     

</script>
4

2 に答える 2

0

フォーム送信jquery関数を使用してみませんか。

if(isset($_POST['email']) && isset($_POST['pass']))
{
    //do something
}

<form id="form_login_pv" action="<?php echo $_SERVER['PHP_SELF'] ?>">
Email: <input type="text" name="email" id="email">
Password: <input type="password" name="pass" id="pass"> <button type="submit" class="send_login_button_pv">Login</button> </form> <script type="text/javascript"> $('.send_login_button_pv').click(function(e) { e.preventDefault(); // just to make sure it wont perform other action $("#form_login_pv").submit(function(){ //afte server response code goes here }); }); </script>

フォームにアクションが設定されていることを確認してください。

于 2012-12-19T11:28:08.720 に答える
0
$.ajax({
    type: "POST",
    url: "index.php",
    data:$('#form_login_pv').serialize(),
    success: function(response){
        alert("mensaje enviado");
    }

});

jQuery準備完了イベントでこれを試してください:

//you can also use an <input type="submit" value="login" /> instead ofusing a button!
$("#button_id").on("click",function(e){
    $("#form_login_pv").submit();
    return e.preventDefault();
});    

$("#form_login_pv").submit(function(e) {
    var email = $('input[name=email]').val();
    var pass = $('input[name=pass]').val();

    // validate given values here
    // if bad value detected, output error and return false;

    if(!email.test(YOUR REGEX HERE)) {
        $('#error-message').text('Wrong E-Mail Format!');
        return false;
    }
    if(pass.length<6) {
        $('#error-message').text('Password to short! At least 6 Characters!');
        return false;
    }
    $.ajax({
        type: "POST",
        url: "index.php",
        data: {
            email: email,
            pass: pass,
        },
        success: function(response){
            alert("mensaje enviado");
        }
    });
    return e.preventDefault();
});

そして、フォームが HTTP Post 経由で送信されないようにすることを忘れないでください!

これを行うには、ボタン クリック イベントの最後に false を返します。

または、イベント オブジェクト e のメソッド e.preventDefault(); を使用します。

e.preventDefault(); を返すことをお勧めします。クリック機能の最後に!

ajax 経由で送信する前に、指定された変数が空かどうかを確認したり、javascript で検証したりすることもできます。

于 2012-12-19T13:48:15.920 に答える