2015-10-04 2 views
3

Я хочу показать ошибку, т. Е. Электронная почта уже существует в базе данных. Если не показать Спасибо сообщение.ошибка в ответе ajax, если ошибка состояния

Я использую для этого ajax и jquery. Вот мой код: Ajax 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

Это зависит от того, что вы отправляете обратно в ответ, когда пользователь не существует в базе данных.

Вы можете изменить условие:

если {......

если ответ является нулевым или пустым ($ подрезать (ответ!).).

0

Возможно, вы должны удалить свой финал?> В своих PHP-файлах, потому что вы можете опустить это. Те и строки после закрытия PHP-тега отвечают за дополнительные пустые символы/входы, которые заставляют 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; 
} 
Смежные вопросы