【发布时间】:2012-01-18 08:14:19
【问题描述】:
我有这个博客应用程序,我想在其中提供一个预览按钮,用于保存表单,然后在新窗口中打开博客。用于此的 javascript 是
$(function() {
var current_link = location.href;
$(".preview_button").click(function()
{
$.ajax({
type: "POST",
url: current_link,
data: $("#blog_form").serialize(),
dataType: 'json',
success: function(data)
{
window.open(data,'preview_tab');
$("#reply-message").html('Form saved');
},
error: function(request,error)
{
$("#reply-message").html('Form not saved because error:' + error);
},
});
return false;
});
}
);
我在views.py中处理这个
if request.is_ajax():
if request.method == 'POST':
author = User.objects.get(pk=author_id)
blog = get_object_or_404(Entry, creator = author, slug = slug)
title = request.POST.get('title', False)
text = request.POST.get('text', False)
tags = request.POST.get('tags', False)
enable_comments = request.POST.get('enable_comments', False)
blog.title = title
blog.text = text
blog.tags = tags
blog.enable_comments = enable_comments
blog.save()
return_message = '/blogs/' + str(blog.creator.id) + '/' + str(blog.slug) + '/' + 'preview/'
return HttpResponse(simplejson.dumps(return_message),mimetype='application/javascript')
return_message包含预览页面的url,用于在新窗口中打开。我有两个问题
- 表单仅提交一次,使用此 javascript,要再次提交,我必须刷新页面。
- 其次,博客的所有字段都在更新,除了 textarea。我不明白为什么会发生这种情况
编辑:问题原因
第一个问题是因为在我序列化表单时发送了相同的 csrf 令牌,所以有没有办法可以从序列化函数中删除这个令牌?
第二个问题是因为我在文本区域使用 TinyMCE 编辑器,当我在编辑器中键入内容时,更改不会反映回实际的文本框。如何从文本编辑器中选择文本,而不是从底层(很可能)隐藏文本区域中选择文本
【问题讨论】:
-
抱歉,不知道,但您可能希望在错误处理程序之后删除尾随逗号 - 有些浏览器不喜欢它。也许您可以发布一些 HTML?
标签: jquery ajax django django-views