【问题标题】:An AJAX request to get the new upload URL获取新上传 URL 的 AJAX 请求
【发布时间】:2014-10-19 09:14:03
【问题描述】:

我将 Google App Engine 用于后端服务,并尝试使用 AJAX 帖子及其Blobstore API 上传文件。我得到了那个部分的工作。如果您不熟悉该服务,则相当简单。 Blobstore API 上传是一个两步过程:您需要获取一个上传 url,然后上传到该 url。

现在,我正在实现一个编辑器,medium.com-like

问题是这个插件需要一个用于上传的端点。由于我的端点不是静态的,并且我每次都需要更新该 URL,因此我在后端准备了一个 API,该 API 以带有该 URL 的 JSON 文件进行响应。我正在尝试执行 AJAX 请求以获取该 URL,但出现错误,因为 POST 请求是针对错误的 url。

这是 POST 请求:

INFO     2014-10-19 08:58:22,355 module.py:659] default: "POST /admin/%5Bobject%20Object%5D HTTP/1.1" 200 2594

这是我的 Javascript 代码:

function getURL(callback) {
    return $.ajax({
        type: "GET",
        url: "/admin/upload_url",
        dataType: "json",
        success: callback
    });
};

$('.editable').mediumInsert({
    editor: editor,
    addons: {
      images: {
        imagesUploadScript: getURL().done(function(json){return json['url']})
      },
      embeds: {
        oembedProxy: 'http://medium.iframe.ly/api/oembed?iframe=1'
      }
    }
});

我想我在 AJAX 返回方面做错了,但如果我 console.log 它我会得到我想要的结果。我已阅读 this answer 并尝试应用它,但我没有设法让它发挥作用。

感谢您的宝贵时间和帮助! :)

【问题讨论】:

    标签: javascript jquery ajax google-app-engine


    【解决方案1】:

    如果有人遇到同样的问题,这就是我解决它的方法。如果您正在阅读本文并且您现在变得更好,请感谢您的每一个帮助。

    var url; // Set a global variable
            // Define the AJAX call 
            function AJAXURL() {
                return $.ajax({
                    type: "GET",
                    url: "/admin/upload_url",
                    success: function(response){
                        // Sets the global variable
                        url = response['url'];
                    }
                });
            };
    
            // Gets a first upload URL doing an AJAX call while everything keeps loading
            AJAXURL();
    
            $('#editable').mediumInsert({
                editor: editor,
                addons: {
                    images: {
                        imagesUploadScript: function getURL() {
                            // makes a request to grab new url
                            AJAXURL();
                            // But returns the old url in the meanwhile
                            return url;
                        }
                    },
                    embeds: {
                        urlPlaceholder: 'YouTube or Vimeo Link to video',
                        oembedProxy: 'http://medium.iframe.ly/api/oembed?iframe=1'
                    }
                }
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      • 2012-09-26
      • 2011-05-09
      相关资源
      最近更新 更多