2011-06-05 42 views
0

我试图防止重复entires在我的数据库为通讯提交表格。我成功地防止了重复项,我一直无法修改我的jQuery来打印错误。我已经包括PHP只是incase我失去了一些东西......任何帮助将不胜感激!防止重复条目 - Ajax不返回错误。 PHP的MySQL的jQuery

的jQuery:

submitHandler: function(form) { 
     jQuery(form).ajaxSubmit({ 
      success: function() { 
       $('#newsletterForm').html("<div id='success-message'></div>"); 
       $('#success-message').html("<p><strong>Thank you.</strong> <br/>You've been added to our list and will hear from us soon!</p>"); 
      }, 
      error: function() { 
       $('#newsletterForm').html("<div id='success-message'></div>"); 
       $('#success-message').html("<p><strong>That email already exists.</strong> <br/>Please enter another email address.</p>"); 
      } 
     }); 
    } 

PHP:

if(isset($_POST['submit'])) { 

if(trim($_POST['email']) == '') { 
    $hasError = true; 
} else if (!eregi("^[A-Z0-9._%-][email protected][A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email']))) { 
    $hasError = true; 
} else { 
    $email = trim($_POST['email']); 
} 

if(!isset($hasError)) { 
    $con = mysql_connect("xxx.xxx.xxx.xxx","user","pass"); 
     if (!$con) 
      { 
       die('Could not connect: ' . mysql_error()); 
      } 

    mysql_select_db("myDB", $con); 

    $query = "SELECT COUNT(id) AS mycount FROM newsletter WHERE email = '$email'"; 
    $result = mysql_query($query); 
    $row = mysql_fetch_array($result); 
    if($row['mycount'] == 0) { 
     $query = "INSERT INTO newsletter (email,dt) VALUES ('$email',NOW())"; 
     mysql_query($query) or die ("Error writing to database"); 
    } else { 
     echo "I'm sorry our database already contains that email address. Please use a new email address to continue."; 
    } 

    if (!mysql_query($sql,$con)) 
     { 
      die('Error: ' . mysql_error()); 
     } 
    mysql_close($con); 
} 
} 

回答

0

相反呼应出来的消息,为什么你就不能打印出了什么事JSON表示?这将允许您直接操作JavaScript中的对象。

请记住:jQuery不是一种语言。

+0

感谢您的回复。我会放弃这一点 – klav 2011-06-15 20:14:14

1

如果您的AJAX请求失败(例如404),则只会调用该错误。

在您的success: function() { }内部,您需要确定您的PHP脚本返回的是成功消息还是错误消息。最简单的方法是使用JSON而不是纯文本。

要做到这一点,在你的PHP呼应,而不是一个字符串,做..

echo json_encode(array('result'=>'success','response'=>'Everything worked'); 

或..

echo json_encode(array('result'=>'error','response'=>'Already exists'); 
在你的Ajax

然后,设置数据类型为 'JSON' 和在你的成功函数中,你可以作为一个对象访问JSON。