更正页面数据的正确过程,无需重新加载页面

时间:2013-11-29 10:14:31

标签: javascript php jquery ajax json

早上好,所以我正在写一个cms进行学习,但不断遇到同样的问题。

例如,更新博客帖子时,我希望在不重新加载页面的情况下更改数据。这样,用户可以看到它发生,并且不必滚动回帖子。所有内容都相同,删除,移动,编辑标题等。

目前我使用.load()。但它对我的剧本造成了严重破坏。

我使用ckEditor,如果我使用.load重新加载div,那么ckEditor就不存在了,所以我猜测脚本不工作/加载。我的所有更新都是通过ajax调用完成的,如果执行.load然后尝试执行另一个更新操作(不刷新页面),它会转到php页面并忽略javascript ajax调用和验证等。

以下是一个例子:

if (check) {
            $.ajax({
                type: "POST",
                url: "process/deletepost.php",
                data: $targetForm.serialize(),
                dataType: "json",
                success: function (response) {

                    if (response.deleteSuccess)
                    $targetForm.find('.editor').toggle(),
                    <!-- Check for .buildtext id etc to prevent it showing any other posts when updating it -->
                    $("#container").load(response.pageurl + "#container"),
                    $targetForm.find('.edity').toggle(),
                    $targetForm.find('.saveupdatebutton').toggle(),
                    $targetForm.find('.deleteupdatebutton').toggle();
                    else
                    $ckEditor.after('<div class="error">Something went wrong!</div>');

                }
            });
        }
        return false;
    }

#container包含所有博客文章,因此目的只是重新加载它们。

任何关于我出错的地方的帮助/我应该做什么来实时加载数据。

谢谢,克雷格。

1 个答案:

答案 0 :(得分:1)

您可以使用JQuery模板而不是加载函数。只需创建博客模板,使用Ajax调用来获取数据,并将模板与数据一起附加。

$.ajax({
     type: "POST",
     url: "process/Update.php",
     data: $targetForm.serialize(),
     dataType: "json",
     success: function (response) {
          $("#template_Name").tmpl(response.Data).prependTo($("#somediv"));
             //do Something
          }
     });

将模板写为

<script id="template_Name" type="text/x-jquery-tmpl">
     <div id="${blogid}">
        ${BlogData}
     </div>   
</script>