如何在ajaxSubmit()之后处理

时间:2011-08-30 09:13:09

标签: django google-app-engine jquery-plugins

以前,我在下面的代码工作正常,并且ajaxSubmit请求已成功完成。

$(document).ready(function() {
            $('#restaurant_photo_upload').submit(function() { 
                var options = { 
                    clearForm: true        // clear all form fields after successful submit
                }; 
                $(this).ajaxSubmit(options);

                return false; 
            });

            $('[name=upload_restaurant_photo_btn]').click(function(){
                alert("Uploading. . . .?");
                $('#restaurant_photo_upload').submit();
            });

处理帖子的代码:

class AddRestaurantPhotoHandler(blobstore_handlers.BlobstoreUploadHandler):
def post(self):
    ......
    ......
    ...... 
    self.render(u'restaurant_profile', restaurant=restaurant, restaurant_key=restaurant_key)

以前,在添加ajaxSubmit()代码而不是正常提交​​之后,我能够通过self.redirect完成整个过程。然而,最近,它给我一个错误,“对象没有属性'渲染'

如果在这种情况下使用self.render是唯一的解决方法,如何将其他查询字符串或数据传递回模板?

我在某种意义上感到困惑,我认为ajax不需要再次渲染页面。

1 个答案:

答案 0 :(得分:1)

目前BlobstoreUploadHandler需要重定向,因此您可以像这样传递查询字符串: self.redirect("/restaurant_profile/%d/success" % (restaurant.key().id()))

如果需要更多变量,您可以将其保存到数据存储区并显示它。

我在google小组中询问为什么我们无法使用blobstoreuploadhandler进行正常渲染,答案是在生产时已经删除了此要求,并且要求从SDK 1.5.4开始使用dev_appserver删除。

我已经使用plupload部署了类似的上传,可以使用jquery和插件上传文件,我的javascript用于上传

  <script type="text/javascript" src="/static/plupload/plupload.full.min.js"></script>
  <script type="text/javascript" src="/static/plupload/jquery.plupload.queue.min.js"></script>
  <script type="text/javascript">
    $(function() {
      uploader = $("#uploader").pluploadQueue({
        runtimes: 'flash,html5,gears,html4',
                use_query_string: false,
                multipart: true,
                flash_swf_url: '/static/plupload/plupload.flash.swf',
                filters: [],
      }).pluploadQueue();
      uploader.bind('UploadFile', function(up, file) {
        $.ajax({
            url: '/generate_upload_url',
            async: false,
            success: function(data) {
              up.settings.url = data;
            },
        });
      });
    });
  </script>