1

我试图在有人提交表单后输出成功和错误消息。

以下是表单的工作方式:

有人可以通过单击编辑按钮来编辑他们的帖子<div>,包含他们要编辑的文本的框会变成一个<textarea>带有“保存”和“取消”按钮的框。

当他们单击“保存”时,它需要输出成功消息“帖子已更新”,或者可能是一些错误消息:

  • “你不能编辑这个帖子” - 如果他们没有编辑帖子的权限
  • “从数据库中选择时出错。请稍后再试” - 如果帖子不存在
  • “请输入包含 4 个或更多字符的帖子” - 帖子没有足够的字符

测试页面: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>,直到您刷新页面,然后它会返回到之前的文本。

由于错误,更改未保存在数据库中。

如果您查看我在上面链接的测试页面,您会发现它比我解释它做得更好。只需编辑帖子并保存即可。尝试在框中输入两个字符,单击保存。您将看到文本更改为您的编辑,但随后刷新页面,它将恢复到以前的状态。

4

2 回答 2

0

显示您的 php 文件中的错误和成功消息,因为您使用 js 检查它的方式错误。

来自手册:http ://api.jquery.com/jQuery.ajax/

成功类型:函数(PlainObject 数据,字符串 textStatus,jqXHR jqXHR)

请求成功时调用的函数。该函数获得三个参数: 从服务器返回的数据,根据 dataType 参数格式化;描述状态的字符串;和 jqXHR(在 jQuery 1.4.x 中,XMLHttpRequest)对象。从 jQuery 1.5 开始,success 设置可以接受一个函数数组。每个函数都会被依次调用。这是一个 Ajax 事件。

于 2013-07-01T17:28:46.337 回答
0

您确实应该将庞大的 viewBlog 函数分成更小的逻辑部分,但是您可以通过以下方式获得您现在想要的一般效果。

PHP

$response = array("status" => isset($error) ? "error" : "success",
    "msg" => $response_msg // determine this as you currently do
    );
return json_encode($response);

JS

$.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>');
        }
    }
});
于 2013-07-01T17:59:25.800 回答