首页 / AJAX / php – Ajax表单有时只提交
php – Ajax表单有时只提交
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – Ajax表单有时只提交,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2897字,纯文字阅读大概需要5分钟。
内容图文
![php – Ajax表单有时只提交](/upload/InfoBanner/zyjiaocheng/777/b8eb51d2f3c647a0824b2f130415f3be.jpg)
在SO上有几个这样的问题,但没有一个答案对我有用.我试过了所有这些.
我试图最小化我粘贴的代码,但这个脚本很难
我有一个评论表单,通过ajax提交到php脚本,保存评论,然后获取所有评论并重新显示它们,以便可以显示新评论而无需刷新页面.
有时,评论会成功提交到数据库并正确重新显示.通常几乎所有其他提交评论都会被保存.每隔一段时间似乎都没有发生.
我真正的问题是每次提交时都没有保存评论.
这是javascript和ajax调用:
$(document).ready(function(){
var working = false;
$('#commentForm').submit(function(e){
if(working) return false;
working = true;
$('#submitComment').val('Working..');
$('span.error').remove();
$.post('/ajax/comment.process.php',$(this).serialize(),function(msg){
working = false;
$('#submitComment').val('Submit');
if(msg.status){
$('#commentArea').slideDown().$(msg.html).prepend('#commentArea');
$('#blogComment').val('');
}
else {
$.each(msg.errors,function(k,v){
$('label[for='+k+']').append('<span class="error">'+v+'</span>');
});
}
},'json');
});
});
这是提交评论的功能:
public function addComment($user_id) {
$validate = new data_validation;
$_POST = $validate->sanitize($_POST);
$newCom = $_POST['blogComment'];
$blog_id = intval($_POST['blogID']);
$photoSubmit = $_POST['comPhoto'];
$newComQuery = $this->mysqli->query("INSERT INTO b_comments (blog_id, user_id, date, content, photo) VALUES ('".$blog_id."', '".$user_id."', Now(), '".$newCom."', '".$photoSubmit."')");
if($newComQuery === false) {
echo "Query failed";
}else{
$returnCom = $this->comMarkup($blog_id);
echo $returnCom;
}
}
这是comMarkup()函数的一部分,它回应了注释(它只是重要的部分):
// This method outputs the XHTML markup of the comment
public function comMarkup($blog_id) {
$sql = $this->mysqli->query("SELECT * FROM b_comments WHERE blog_id = '".$blog_id."' ORDER BY date DESC");
while($d = $sql->fetch_assoc()) {
$d = $validate->sanitize($d);
echo "
<div class='comment-block'>
<span class='com-img'><img src='".$photo_path."' /></span>
<h3 style='display: inline;'><a href='".$profile."'>".$userName."</a></h3>
<div class='com-date'>".$d['date']."</div>
<p>".$comContent."</p>
</div>
";
}
}
编辑:这是请求的comment.process.php代码:
session_start();
include_once('../classes/comment.class.php');
include_once('../classes/db.class.php');
include_once('../classes/user.class.php');
$user_id = $_SESSION['user_id'];
$db = new DBConnection;
$comments = new Comment($db);
$user = new User($db);
$blogID = intval($_POST['blogID']);
$addCom = $comments->addComment($user_id);
echo json_encode(array('status'=>1,'html'=>$addCom));
解决方法:
根据您的描述,我的猜测是它与您的工作变量有关,以及它在$.post()结尾处未设置为false的事实.
但是,您制定流程的方式存在一些逻辑,效率和可管理性问题.我建议看一下official jQuery docs for $.post(),特别是.done(),. fail()和.always()链式方法.
我还建议将PHP变量命名为$_POST以外的其他东西,这样就不会与PHP超级全局混淆.
最后,我建议将您的评论视为对象并使用PDO(这是PDO的链接:查询作为一种“沉浸式”方法,但一定要阅读所有文档).它将为您节省大量数据库交互的麻烦.
内容总结
以上是互联网集市为您收集整理的php – Ajax表单有时只提交全部内容,希望文章能够帮你解决php – Ajax表单有时只提交所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。