我有這個博客應用程序,我想給一個預覽按鈕,保存表單,然後在新窗口中打開博客。造成這種情況的JavaScript是Ajax動力表單提交只能工作一次Django
$(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? – nnnnnn