0

我对下面的代码有问题,如果电子邮件已经存在,我会尝试带来错误消息,但我没有成功..查看代码:

Ajax 一个 jQuery:

<script type="text/javascript">  

    // Centering the text content
    jQuery(window).resize(function () {
        boxHeight();
    }).load(function() {
        boxHeight();
        // Show the content and focus the email input
        $("#content").fadeIn();
        $("#email").focus();


    });

    jQuery(document).ready(function($){
        $('#subscribe').submit(function(e){
            e.preventDefault();

            email = $('input#email');           
            email_regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;           
            if(!email_regex.test(email.val())) {
                $('#response', form).fadeIn(500, function() {
                    $('#response', form).html('<p class="message warning" align="center">Invalid email</p>');
                });
                return;
            } else {
                $('#response', form).html('<p class="message">Please Wait...</p>');
            }

            var form = $(this);
            var post_url = form.attr('action');
            var post_data = form.serialize();               
            $.ajax({
                type: 'POST',
                url: post_url,
                data: post_data,
                success: function(responseText) {  if(responseText == 1) {
                    $('#response', form).html('<p class="message">Error...</p>');
                } else { if(responseText == "") {                       
                    $(form).fadeOut(500, function(){
                        form.html(msg).fadeIn();
                    });

                }
                }
            }
            });
        });
    });
</script>

PHP数据库连接:

    <?php    
$host="xxxx"; // Host name
$username="xxxx"; // Mysql username
$password="xxxx"; // Mysql password
$db_name="xxxx"; // Database name
$tbl_name="xxxx"; // Table name

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// Get values from form
$email = $_POST['email'];

$query = mysql_query("SELECT email FROM banco_emails WHERE 'email' = '$email'");
    if(mysql_num_rows($query) == 1) { // if return 1, email exist.
    echo '1';
    } else {
// Insert data into mysql
$sql="INSERT INTO $tbl_name(email) VALUES ('". $email . "')";
$result=mysql_query($sql);
echo '<p class="message">Thanks for registering. Our bar is getting crowded!</p>';

问题是 ajax 代码没有显示错误消息,只有消息“请稍候......”并且没有任何反应,我不知道为什么......

对不起,我的英语不好。

提前致谢!


问题解决了,问题出在php代码中,我做到了,而且成功了!

    $query = mysql_query("SELECT email FROM banco_emails WHERE email = '$email' LIMIT 1");

    $email_check = mysql_num_rows($query);
     if ($email_check > 0) {
    echo '1';
    } else if ($email_check == 0) {
// Insert data into mysql
$sql="INSERT INTO $tbl_name(email) VALUES ('". $email . "')";
$result=mysql_query($sql);
echo '<p class="message">Thanks for registering. Our bar is getting crowded!</p>';
4

2 回答 2

1

在您的成功函数中,您错误地处理了 PHP 在成功时返回的内容。如果电子邮件是新的并且被添加到数据库中,PHP 将回显:

<p class="message">Thanks for registering. Our bar is getting crowded!</p>

您的 JS 会像这样解析响应:

if(responseText == 1) {
    $('#response', form).html('<p class="message">Error...</p>');
} else {
   if(responseText == "") {                       
       $(form).fadeOut(500, function(){
          form.html(msg).fadeIn();
       });
   }
}

这里的问题是,如果 responseText 是空字符串,您只会显示 HTML 消息。您应该摆脱 if 语句:

if(responseText == 1) {
    $('#response', form).html('<p class="message">Error...</p>');
} else {                       
   $(form).fadeOut(500, function(){
      form.html(msg).fadeIn();
   });
}

这样responseText就显示出来了。而且我不能 100% 确定您提交的 HTML 是什么样的,但是在您显示消息后,如果隐藏表单后它仍然可见,您可能希望淡出“请稍候”。

于 2012-10-20T23:13:10.717 回答
0

尝试这种方式:

制作独特的电子邮件栏。如果电子邮件地址已经存在,则返回错误,您可以在 ajax 错误部分向用户显示错误消息。

于 2012-10-20T22:35:45.323 回答