Как обрабатывать после ajaxSubmit () - PullRequest
1 голос
/ 30 августа 2011

Ранее мой следующий код работал нормально, и запрос 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. Однако, недавно, это выдает ошибку, "объект не имеет атрибута" render "

Если использование self.render является единственным обходным решением в этом случае, как я могу передать дополнительные строки запроса или данные обратно в шаблон?

Я запутался в том смысле, что я подумал, что ajax больше не нужно рендерить страницу.

1 Ответ

1 голос
/ 30 августа 2011

В настоящее время BlobstoreUploadHandler требует перенаправления, поэтому вы можете передавать строки запроса следующим образом: self.redirect("/restaurant_profile/%d/success" % (restaurant.key().id()))

Если требуется больше переменных, вы можете сохранить их в хранилище данных и отобразить их.

Я спросил в группах Google, почему мы не можем сделать нормальный рендеринг с помощью blobstoreuploadhandler, и я ответил, что это требование уже удалено в рабочей среде, а требование было удалено с помощью dev_appserver, начиная с SDK 1.5.4.

Я развернул аналогичную загрузку с помощью 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...