取消提交jquery

时间:2015-05-12 09:16:16

标签: php jquery ajax

这是请求数据以检查电子邮件是否存在的表单中的代码的一部分。问题是,如果没有这样的邮件,程序应该返回0。它无法正常工作,因为程序会继续发送数据,即使邮件不正确。

如果您想了解更多信息,或者我遗失了某些内容,请告知我们。提前谢谢。

$(document).ready(function () {
    $("#enviar").click(function(e)  {
        e.preventDefault();
        var error = false;
        consulta = $("#email2").val();
        $.ajax({
            type: "POST",
            url: "compruebaEmail.php",
            data: "b="+consulta,
            dataType: "html",
            error: function(){
                alert("error petición ajax");
            },
            success: function(data){  
                if(data==0){
                    $("#error").html("Email  incorrecto");
                    error = false;
                }else{
                    $("form").unbind('submit').submit();
                }
            }
        }); 
        if (error){     
          return false;   
        }
    });
});

这是我的compruebaEmail.php

<?php require_once('connections/vinoteca.php'); ?>


<?php

    mysql_select_db($database_vinoteca, $vinoteca);

      $user = $_POST['b'];

      if(!empty($user)) {
            comprobar($user);
      }

      function comprobar($b) {


            $sql = mysql_query("SELECT * FROM usuarios WHERE email = '".$b."'");

            $contar = mysql_num_rows($sql);

            if($contar == 0){
                  echo 0;
            }else{
                  echo 1;
            }
      }     
?>

这是POST

<form method="POST" name="form1" action="validarUsu.php">
    <div class="row">
             <span class="center">Email</span>
        </div>
    <div class="row">   
         <input type="text" name="email" id="email2" value="" size="32" />          
    </div>


    <div class="row">
        <span class="center">Contrase&ntilde;a</span>       
    </div>
    <div class="row">
        <input type="password" name="password"   id="id2" value="" size="32" />
            </div>

     <div class="row">
               <span id="error"> </span> 
    </div>

    <div class="row">
        <input type="submit" value="Acceder" id="enviar" size="20">
    </div>

    <div class="row">
        <a href="recuperarPassword.php">Recuperar contrase&ntilde;a</a>
    </div>
 </form>

2 个答案:

答案 0 :(得分:1)

问题是你从Ajax函数返回false。您需要从click函数返回false。试一试:

$("#enviar").click(function() {
    var error = false;
    consulta = $("#email2").val();
    $.ajax({
        type: "POST",
        url: "compruebaEmail.php",
        data: "b="+consulta,
        dataType: "html",
        error: function(){
            alert("error petición ajax");
        },
        success: function(data){  
            if(data==0){
                $("#error").html("Email  incorrecto");
                error = true;
            }
        }
    }); 
    if (error)
        return false;   
});

答案 1 :(得分:0)

如果你想取消提交活动,那么:

要么:

1 - 将事件arg添加到您的点击处理程序:

$("#enviar").click(function(event){ 

2 - 使用event.preventDefault();当你想取消提交信息时:)

或更改&#34;返回false;&#34;位置,以便在&#34;点击&#34;处理程序范围并注意&#34;成功&#34;范围例如带有一个布尔值,表示是否存在错误(编辑:那是Styphon&#39;解决方案)

此处的文档:http://api.jquery.com/event.preventdefault/