1

我正在尝试通过 jQuery ajax 将 post 变量发送到 php 自己的文档,但是在发送之后,post vars 没有设置。

编码:

    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
$.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 回答
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 回答