早上好,所以我正在写一个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包含所有博客文章,因此目的只是重新加载它们。
任何关于我出错的地方的帮助/我应该做什么来实时加载数据。
谢谢,克雷格。
答案 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>