我正在努力输出成功&有人提交表格后的错误消息。
以下是表单的工作原理:
有人可以通过点击修改按钮来编辑他们的帖子,并且包含他们想要编辑的文字的<div>
框变成<textarea>
框,其中包含“保存”和&amp; “取消”按钮。
当他们点击“保存”时,它需要输出成功消息“帖子已更新”或错误消息,这可能是一些事情:
测试页面:http://thebulb.daysofthedead.net/testing.php
使用Javascript:
function sendAjax(textarea_value, post_id, blog_id) {
$.ajax({
url: 'testing.php?action=blog_edit&post_id='+post_id,
type: 'post',
data: {
postcontent: textarea_value,
blog_id: blog_id,
AddReplyForm: 'Post'
},
success: function (answer) {
// Should output: "<div class="dialoginfo"><div class="dialoginfosub"><div class="dialoginfocontent">Post has been updated</div></div></div>"
},
error: function () {
// In the PHP script I check for:
// If that user has permission to edit the post. If not, it returns "You can not edit this post".
// If the post_id exists in the database, if not, it returns "Error while selecting from database. Please try again later".
// If there was 4 or more characters. If not, it returns "Please enter a post with 4 or more characters".
}
});
}
PHP(长脚本,这就是我使用PasteBin的原因):http://pastebin.com/za2NFPHU
JSFiddle:http://jsfiddle.net/Draven/zsWBv/12/
编辑:代码全部有效,我只需要输出消息。
例如,如果我编辑帖子并且只插入两个字符并提交,则应该输入错误“请输入包含4个或更多字符的帖子”。相反,它会更改<div>
中的文本,直到您刷新页面,然后它会返回到之前的文本。
由于错误,更改不会保存在数据库中。
如果您查看上面链接的“测试”页面,您可以看到它比我解释它做得更好。只需编辑帖子并保存即可。尝试在框中输入两个字符,单击“保存”。您会看到文本已更改为您的编辑,但随后刷新页面,它将恢复为之前的状态。
答案 0 :(得分:0)
显示你的php文件中的错误和成功消息,因为你用错误的方法用js检查它。
来自手册:http://api.jquery.com/jQuery.ajax/
成功 类型:Function(PlainObject data,String textStatus,jqXHR jqXHR)
请求成功时要调用的函数。该函数传递三个参数:从服务器返回的数据,根据dataType参数格式化;描述状态的字符串;和jqXHR(在jQuery 1.4.x,XMLHttpRequest)对象。从jQuery 1.5开始,成功设置可以接受一系列函数。每个函数将依次调用。这是一个Ajax事件。
答案 1 :(得分:0)
你真的应该把你的巨型viewBlog功能分成更小的逻辑部分,但是你可以做的就是获得你想要的一般效果。
$response = array("status" => isset($error) ? "error" : "success",
"msg" => $response_msg // determine this as you currently do
);
return json_encode($response);
$.ajax({ ...
success : function(response) {
var data = $.parseJSON(response);
if(data.status == "error") { alert(data.msg); }
else {
//do your success thing
$(".my_success_holder_div").html('<div class="dialoginfo"><div class="dialoginfosub"><div class="dialoginfocontent">Post has been updated</div></div></div>');
}
}
});