当有多个提交按钮时,在新选项卡中打开重定向页面

时间:2011-12-11 21:40:10

标签: jquery ajax django forms django-views

我正在django制作一个有3个提交按钮的博客应用程序。

  1. 发布
  2. 保存
  3. 预览
  4. 保存将由AJAX处理并更新博客中的数据。发布,发布博客并重定向到相应的页面,预​​览在不同的选项卡中显示预览。在预览的情况下,我可以简单地调用保存功能,然后在新选项卡中打开预览页面./所以实际上我需要通过AJAX保存。我使用下面给出的代码,我收到错误

    <form id="blog_form" action="" method="post">
    <!-- All the form fields are here -->
        <a href="#" id="not_button" class="save_button"> Save</a>
    </form>
    

    ,javascript为

        var post_url = location.pathname;
    
        $(".save_button").click(function() 
        {           
            $.ajax({
              type: "POST",
              url: post_url,
              data: $("#blog_form").serialize(),
              dataType: 'json',
              success: function() 
              {
                // display success message 
                $("#reply-message").html('Your message has been sent!').fadeOut(3000, function() {});
              },
              error: function() 
              {
                // display failure message
                $("#reply-message").html('Form not saved!').fadeOut(3000, function() {});
              },
    
            });
    
            return false;   
        });
    

    并且除了其他内容之外,视图还有这部分

    def blog_form(request,author_id=None,slug=None):
         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)
    
                form = EntryForm(request.POST, instance = blog)
                if form.is_valid():
                    form.save()
                return_message = "Updated"
                return HttpResponse(return_message,mimetype='application/javascript')
    

    我希望这可行,但我不知道为什么我在jquery调用中收到错误。我收到失败的消息。此表单的典型网址为/blogs/1/my-blog/edit/以下是我的urls.py文件的相关部分

    url(r'^(?P<author_id>\d+)/(?P<slug>[-\w]+)/edit/$', 'blog.views.blog_form', name='edit_blog'),
    

    修改

    我在jquery中遇到的错误是parsererror,在我解决了这个问题之后出现了一个新错误。表单仅通过ajax提交一次。如果我再次尝试提交它,它就不起作用,在重新加载页面之前没有任何反应。

0 个答案:

没有答案