如何检查电子邮件是否存在

时间:2014-01-29 13:27:02

标签: php jquery ajax

我正在尝试收到一条错误消息,指出该电子邮件已经存在且我正在尝试使用jquery。我正在使用ajax并且它确实有效,因为当我使用firebug并且我去控制台时它说电子邮件地址存在但我希望它出现在页面上。

的index.php

<div class="register-newsletter">
<form id="myForm">
    <input type="email" name="email" id="email" value="enter email address" required>
    <input type="image" value="SUBMIT" id="sub" src="images/register.jpg">
 </form>

<a class="newsletter" href="javascript:void(0);">Add to e-mailing list</a>

这是我的jquery

$("#email").click(function(){
    if($.trim($(this).val() ) == "enter email address"){
        $(this).val("");
    }
})

$("#email").blur(function(){
    if($.trim($(this).val() ) == ""){
        $(this).val("enter email address");
    }
})

$("#sub").click(function () {

    var email = $.trim($("#email").val());
    if(email == "" || !isValidEmailAddress(email)){
        alert('enter valid email');
        return false;
    }

    var ajaxid = ajax("ajax/userInfo.php","email="+encodeURIComponent(email));
    $("#result").html($.trim(ajaxid));

});

$("#myForm").submit(function () {
    return false;
});

function clearInput() {

    $("#myForm :input").val('');
}

$('p').hide();
$('#myForm').hide();
$(".newsletter").click(function(){
    $(".newsletter").hide();
    $('#myForm').show();
});
$('#myForm').submit(function(){
    $('#myForm').hide();
    $('p').show(); 
});

这是我的userInfo.php

<?php
include("../config.php");
global $_NEWSLETTER_CUSTOMERS_TABLE;

$email = $_POST['email'];
//$email = html_entity_decode(str_replace("'", "\'", $_POST["email"]));

$query = mysql_query("SELECT * FROM $_NEWSLETTER_CUSTOMERS_TABLE WHERE `email` = '".$email."'");
if(mysql_num_rows($query) >0){
echo '<span class="exists">Email address arleady exists</span>';
} else {

if(mysql_query("INSERT INTO $_NEWSLETTER_CUSTOMERS_TABLE(email) VALUES('$email')"))
    echo "Successfully Inserted";
else
    echo "Insertion Failed";
}

3 个答案:

答案 0 :(得分:4)

您试图错误地附加数据。 jQuery的ajax()方法接受一个函数,该函数将在请求成功时调用,称为success。目前,您尝试将ajaxid(包含ajax()的返回值,而不是请求的结果)附加到#result

var ajaxid = ajax("ajax/userInfo.php","email="+encodeURIComponent(email));
$("#result").html($.trim(ajaxid));

应该更像是:

var ajaxid = ajax("ajax/userInfo.php", {
    data:"email="+encodeURIComponent(email),
    success:function(d){
        $("#result").html($.trim(d));
    }
});

答案 1 :(得分:0)

在点击处理程序中使用jQuery.post()

$.post('ajax/userInfo.php', { email: email }, function(data) {
  alert(data.message);
}, 'json');

在PHP文件而不是echo中使用:

$response = array();
$response['message'] = mysql_query("...") ? 'success' : 'fail';
return json_encode($response);

答案 2 :(得分:0)

您必须返回值,例如JSON

你的JS

$("#sub").click(function () {
$.ajax({
      url      : "ajax/userInfo.php",
      dataType : "json",
      error    : function(request, error) {    
                   alert("Erreur : responseText: "+request.responseText);
                 },
      success  : function(data) { 
                   alert(data.email_exist); 
                   $("#result").html(data.email_exist);
                 }      
 });    

});

和你的PHP

if(mysql_num_rows($query) >0){
  $result = array(
   'email_exist' => 'Email address arleady exists'
  );
}
json_encode($result);