2015-10-04 54 views
3

我想显示错误即。数据库中已存在电子邮件。如果没有显示谢谢你的消息。错误的AJAX响应如果条件错误

我为此使用ajax和jquery。这里是我的代码: 阿贾克斯jQuery的:

<script type="text/javascript" > 
$(function() { 
    var val_holder; 
    $("#subscribe").click(function() { 
     val_holder  = 0; 
     var subscribe_mail  = jQuery.trim($("#subscribe_mail").val()); // email field 
     var email_regex = /^[a-zA-Z0-9._-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; 

     if(subscribe_mail == "") { 
      $(".error_message").html("This field is empty."); 
      val_holder = 1; 
     } 
     if(subscribe_mail != "") { 
      if(!email_regex.test(subscribe_mail)){ // if invalid email 
       $(".error_message").html("Your email is invalid."); 
       val_holder = 1; 
      } 
     } 
     if(val_holder == 1) { 
      return false; 
     } 
     val_holder = 0; 
     var dataString = '&subscribe_mail=' + subscribe_mail; 

     $.ajax({ 
      type: "POST", 
      url: "ajax_subscribe.php", 
      data: dataString, 
      datatype: "json", 
      success: function(response) { 
       console.log(response); 
       if(response!= '') 
       { 
        $('.error_message').html(subscribe_mail + ' is already Exists.'); 
        return true; 

       } else { 
        $('.error_message').html('Thanks For subscription!'); 
        return false; 
       } 
      } 
     }); 
     $("#subscribe_form")[0].reset(); 
     return false; 
    }); 
}); 

和PHP文件中的代码是:

<?php error_reporting('E_ALL^E_NOTICE'); include('config.php');if($_POST) { $subscribe_mail = $_POST['subscribe_mail']; 
$date = date('Y-m-d'); 

$q = mysql_query("select * from signups where signup_email_address='".$subscribe_mail."' ") or die(mysql_error()); 
$n = mysql_fetch_row($q); 
if($n>0) 
{ 
    echo 'Already Exists'; 
} 
else 
{ 
    $insert = mysql_query("insert into signups(signup_email_address,signup_date) values('$subscribe_mail','$date')") or die(mysql_error()); 

    $from = '[email protected]'; 
    $to = $subscribe_mail; 
    $headers = 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= "From: " . $from . "\r\n"; // Sender's E-mail 
    $headers .= "Reply-to: " . $from . "\r\n"; 
    $headers .= "Return-Path: $from\n"; 
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

    $subject = "Thanks for Subscription"; 
    $message = "Subscription email id : ".$subscribe_mail." ";  

    $sentmail = mail($to,$subject,$message,$headers); 
    $sentmail = mail($from,$subject,$message,$headers); 
} } ?> 

只有 if(response!= ''){$('.error_message').html(subscribe_mail + ' is already Exists.'); return true; } 这种情况下工作。如果回应是空白的,它不会去其他部分。

+0

什么是执行console.log打印,而你有空白的响应?它打印什么? – sandeepsure

+0

@sandeepsure它打印空白值 –

+0

有可能有一个空白空间。所以,在检查之前修改响应。 – sandeepsure

回答

2

这取决于您在数据库中不存在用户时在回复中发送的内容。

您可以更改条件:

如果{......

如果响应为null或空($修剪(响应)!)。

0

您应该删除您的PHP文件中的最终?>,因为您可以忽略它。那些和关闭PHP-Tag之后的行是负责额外的空白字符/进入,这使得calinaadi的回答很好。

而且你应该检查你的包含是否有相同的行为。

我永远不会检查什么或空字符串和thatwhy扭转你是否:

if(str.trim(response) == 'Already Exists') { 
     $('.error_message').html('Thanks For subscription!'); 
     return false; 
} elseif(str.trim(response) == 'New User') {    
     return true; 
} else { 
     $('.error_message').html(subscribe_mail + ' is some strange unknown Stringoutput.'); 
     return false; 
}