我使用Google App Engine提供后端服务,并尝试使用AJAX帖子及其Blobstore API上传文件。我得到了那部分工作。如果您不熟悉该服务,则非常简单。 Blobstore API上传分为两个步骤:您需要获取上传网址,然后上传到该网址。
现在,我正在实施一个编辑器,medium.com-like。
事情是这个插件需要上传端点。由于我的端点不是静态的,我每次都需要更新该URL,因此我在后端准备了一个API,该API使用该URL响应JSON文件。我正在尝试执行AJAX请求以获取该URL但我收到错误,因为POST请求是针对错误网址完成的。
这是POST requet:
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并尝试应用它,但我没有设法让它正常运行。
感谢您的时间和帮助! :)
答案 0 :(得分:0)
如果有人遇到同样的问题,这就是我解决问题的方式。如果你正在阅读这篇文章而你现在感觉更好,请感谢每一位帮助。
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'
}
}
});