Javascript Ajax脚本不更改按钮文本
我制作了一个注释系统,通过Ajax在数据库中插入注释。问题是,它在db中正确添加了注释,但与Javascript Ajax脚本不更改按钮文本,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我制作了一个注释系统,通过Ajax在数据库中插入注释。问题是,它在db中正确添加了注释,但与submit的成功代码不兼容。有什么建议吗 表格 <h4>Add your Review:</h4> <?php if(isset($_SESSION["login_email"]) && !empty($_SESSION["login_email"])) { $email=$_SESSION['login_ema
submit
的成功代码不兼容。有什么建议吗
表格
<h4>Add your Review:</h4>
<?php
if(isset($_SESSION["login_email"]) && !empty($_SESSION["login_email"]))
{
$email=$_SESSION['login_email'];
?>
<div id="addCommentContainer">
<form id="addCommentForm" method="post" action="">
<div>
<label for="body">Review</label>
<textarea name="body" id="body" cols="20" rows="5"></textarea>
<input type="hidden" name="email" id="email" value="<?php echo $email?>" />
<input type="submit" id="submit" value="Submit" />
</div>
</form>
</div>
<?php
}
else{
echo "Login to add review!";
}
?>
</div>
添加您的评论:
复习
使“提交”按钮处于禁用状态,直到无法从服务器获得响应为止
$(document).ready(function() {
$('#addCommentForm').submit(function(e) {
e.preventDefault();
$('#submit').prop("disabled", true);
$('span.error').remove();
$.ajax({
url: "submit.php",
type: "POST",
data: $('#addCommentForm').serialize()
success: function(result) {
$('#submit').prop("disabled", true);
if (msg.status) {
$(msg.html).hide().insertBefore('#addCommentContainer').slideDown();
$('#body').val('');
} else {
$.each(msg.errors, function(k, v) {
$('label[for=' + k + ']').append('<span class="error">' + v + '</span>');
});
}
}
});
});
})
$(文档).ready(函数(){
$('#addCommentForm')。提交(函数(e){
e、 预防默认值();
$('#submit').prop(“disabled”,true);
$('span.error').remove();
$.ajax({
url:“submit.php”,
类型:“POST”,
数据:$('#addCommentForm')。序列化()
成功:功能(结果){
$('#submit').prop(“disabled”,true);
如果(消息状态){
$(msg.html).hide().insertBefore('#addCommentContainer').slideDown();
$('正文').val('');
}否则{
$.each(msg.errors,函数(k,v){
$('label[for='+k+']')。追加('+v+'');
});
}
}
});
});
})
添加.done
,.fail
,。始终在.post()之后添加,您将看到错误。在下面的示例代码中,我正在打印到控制台。问题似乎在于,您要求返回的数据采用JSON
格式,但您没有使用JSON发送数据。将数据转换为JSON,然后发送:
$.post('submit.php', $(this).serialize(), function (msg) {
working = false;
$('#submit').val('Submit');
if (msg.status) {
$(msg.html).hide().insertBefore('#addCommentContainer').slideDown();
$('#body').val('');
} else {
$.each(msg.errors, function (k, v) {
$('label[for=' + k + ']').append('<span class="error">' + v + '</span>');
});
}
}, 'json').done(function () {
alert("second success");
}).fail(function (a,b,c) {
console.log(a);
console.log(b);
console.log(c);
}).always(function () {
alert("finished");
});
您是否尝试过另一种方法,即不保留按钮的input
标记,而是保留按钮的标记并检查代码是否有效?但是这里是$('#submit').val()
将更改为$('#submit').html()
或$('#submit').text()
@dvenkatsagar$('#submit').html('submit'))
也不起作用,即使您将输入标记更改为按钮
标记?您遇到了什么问题?@AliKhanusiya的问题是它成功地将值插入数据库中,但它不会将按钮值更改为从工作状态提交,然后再进行编码,这无助于显示submit.php的内容这样我们就能知道发生了什么
$(document).ready(function() {
$('#addCommentForm').submit(function(e) {
e.preventDefault();
$('#submit').prop("disabled", true);
$('span.error').remove();
$.ajax({
url: "submit.php",
type: "POST",
data: $('#addCommentForm').serialize()
success: function(result) {
$('#submit').prop("disabled", true);
if (msg.status) {
$(msg.html).hide().insertBefore('#addCommentContainer').slideDown();
$('#body').val('');
} else {
$.each(msg.errors, function(k, v) {
$('label[for=' + k + ']').append('<span class="error">' + v + '</span>');
});
}
}
});
});
})
$.post('submit.php', $(this).serialize(), function (msg) {
working = false;
$('#submit').val('Submit');
if (msg.status) {
$(msg.html).hide().insertBefore('#addCommentContainer').slideDown();
$('#body').val('');
} else {
$.each(msg.errors, function (k, v) {
$('label[for=' + k + ']').append('<span class="error">' + v + '</span>');
});
}
}, 'json').done(function () {
alert("second success");
}).fail(function (a,b,c) {
console.log(a);
console.log(b);
console.log(c);
}).always(function () {
alert("finished");
});
echo json_encode($_POST);