Jquery 淡出,删除addClass后不工作的类
我有一份时事通讯报名表,我正在准备。我有以下jQuery脚本:Jquery 淡出,删除addClass后不工作的类,jquery,json,addclass,removeclass,Jquery,Json,Addclass,Removeclass,我有一份时事通讯报名表,我正在准备。我有以下jQuery脚本: $(document).ready(function(){ $('#newsletter-signup').submit(function(){ //setup variables var form = $(this), formData = form.serialize(), formUrl = form.attr('action'), formMethod = f
$(document).ready(function(){
$('#newsletter-signup').submit(function(){
//setup variables
var form = $(this),
formData = form.serialize(),
formUrl = form.attr('action'),
formMethod = form.attr('method'),
responseMsg = $('#signup-response');
//show response message - waiting
responseMsg.hide()
.addClass('response-waiting')
.text('Please Wait...')
.fadeIn(200);
//send data to server for validation
$.ajax({
url: formUrl,
type: formMethod,
data: formData,
success:function(data){
//setup variables
var responseData = jQuery.parseJSON(data),
klass = '';
//response conditional
switch(responseData.status){
case 'error':
klass = 'response-error';
break;
case 'success':
klass = 'response-success';
break;
}
//show reponse message
responseMsg.fadeOut(200,function(){
$(this).removeClass('response-waiting')
.addClass(klass)
.text(responseData.message)
.fadeIn(200,function(){
//set timeout to hide response message
setTimeout(function(){
responseMsg.fadeOut(200,function(){
$(this).removeClass(klass);
});
},3000);
});
});
}
});
//prevent form from submitting
return false;
});
});
如果您感兴趣,下面是我的PHP代码片段(删除了DB凭据):
我不明白这里出了什么问题。然而,当我尝试删除大部分语法并仅使用responseMsg.fadeOut(200)时,语法似乎很好代码>responseMsg不会褪色(因此您可以忘记它删除类并添加新类)。我已经用Firebug检查了这一点,POST响应确实显示返回了正确的错误和成功消息…(并且确实检查了我的数据库,添加了条目并发送了一封警报电子邮件)…因此,除了花哨的schnazzy JQuery效果外,所有功能都正常工作。我简单地认为我与页面上的另一个元素有JQuery冲突,所以我删除了它,没有任何更改。我尝试使用$.noconflict(),$.noconflict(true),并用JQuery替换所有的$实例(但是,页面上的另一项无论如何都没有冲突)。我尝试删除添加“response waiting”类的调用,并在数据的JSON解析之后添加响应消息类,但没有成功。我几乎是从中复制并粘贴了这个脚本,所以我不知道为什么它不起作用。有人有线索吗
更新
这里的FWIW是一个,虽然没有PHPDB的东西它绝对不能工作…不知道我怎么能解决这个问题,伙计们
更新成功了,愚蠢的错误是把我的PHP代码不放在我的html头上……一旦我被允许,我会尽快发布答案。你需要在success函数之前声明Klass变量,这样回调函数就可以检索它,而不是使用setTimeout,只需使用.delay()我的意思是你应该精简代码以复制你的问题。一般来说,你会找出你的问题。这很好(只需单击触发事件即可模拟表单提交):
如果有一个JSFIDLE示例来详细说明您的问题,那就太好了;不幸的是,我不知道如何在涉及表单的情况下使其工作。好的,我让它工作了……我的PHP代码在我的html中,而不是最重要的!:/感谢您对如何在JSFIDLE中解决问题的建议!
<?php
if(isset($_GET['action'])&& $_GET['action'] == "signup"){
mysql_connect(***REMOVEDforprivacy*******);
mysql_select_db(***REMOVEDforprivacy*******);
//sanitize data
$email = mysql_real_escape_string($_POST['signup-email']);
$to ='***REMOVEDforprivacy*******';
$subject = '***REMOVEDforprivacy*******';
$body = "The email address ". $email. " has been added to the email database.";
$headers = 'From: ***REMOVEDforprivacy*******' . "\r\n" .
'Reply-To: ***REMOVEDforprivacy*******' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
//validate email address - check if input was empty
if(empty($email)){
$status = "error";
$message = "You did not enter an email address!";
}
else if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ //validate email address - check if is a valid email address
$status = "error";
$message = "You have entered an invalid email address!";
}
else {
$existingSignup = mysql_query("SELECT * FROM signups WHERE email_address='$email'");
if(mysql_num_rows($existingSignup) < 1){
$insertSignup = mysql_query("INSERT INTO signups (email_address) VALUES ('$email')");
if($insertSignup){
$status = "success";
$message = "You have been signed up!";
mail($to, $subject, $body, $headers);
}
else {
$status = "error";
$message = "Oops, There has been a technical error!";
}
}
else {
$status = "error";
$message = "Looks like you have already registered this email address with us. Thank you for your support!";
}
}
//return json response
$data = array(
'status' => $status,
'message' => $message
);
echo json_encode($data);
exit;
}
?>
//show reponse message
responseMsg.fadeOut(200,function(){
$(this).removeClass('response-waiting')
.addClass(klass)
.text(responseData.message)
.fadeIn(200,function(){
//set timeout to hide response message
setTimeout(function(){
responseMsg.fadeOut(200,function(){
$(this).removeClass(klass);
});
},3000);
});
});
$(document).ready(function(){
$('#signup-button').click(function(){
responseMsg = $("#signup-response");
//show response message - waiting
responseMsg.hide()
.addClass('response-waiting')
.text('Please Wait...')
.fadeIn(200);
var responseData = { status : "success", message: "success message"};
var klass = '';
//response conditional
switch(responseData.status){
case 'error':
klass = 'response-error';
break;
case 'success':
klass = 'response-success';
break;
}
//show reponse message
responseMsg.fadeOut(200,function(){
$(this).removeClass('response-waiting')
.addClass(klass)
.text(responseData.message)
.fadeIn(200,function(){
//set timeout to hide response message
setTimeout(function(){
responseMsg.fadeOut(200,function(){
$(this).removeClass(klass);
});
},3000)
});
});
});
});