Javascript 使用jquery处理503错误
我正在使用Javascript 使用jquery处理503错误,javascript,jquery,mongodb,meteor,gridfs,Javascript,Jquery,Mongodb,Meteor,Gridfs,我正在使用gridfs在mongoDB中存储图像。我有一个问题,当我在后台更新图像,并希望更新他们在屏幕上完成上传。当我在mongoDB中存储了一个图像文档,然后更新屏幕时,我触发一个事件。看起来文档是在上载图像时创建的,因为如果我这样做,我的图像将被破坏,出现503错误(服务不可用)。当我刷新页面时,屏幕上会显示图像 我相信问题是,我试图得到的图像时,它仍然上传。我想做一个$.get(imagesURL)并捕获503错误,但我不知道如何做。如果我能捕捉到错误,我可以做一个循环,等待它上传 也许
gridfs
在mongoDB
中存储图像。我有一个问题,当我在后台更新图像,并希望更新他们在屏幕上完成上传。当我在mongoDB中存储了一个图像文档,然后更新屏幕时,我触发一个事件。看起来文档是在上载图像时创建的,因为如果我这样做,我的图像将被破坏,出现503错误
(服务不可用)。当我刷新页面时,屏幕上会显示图像
我相信问题是,我试图得到的图像时,它仍然上传。我想做一个$.get(imagesURL)
并捕获503错误,但我不知道如何做。如果我能捕捉到错误,我可以做一个循环,等待它上传
也许你们也有更好的解决方案,或者知道如何使用jquery捕捉503错误?
我对图像使用普通的文件输入字段
(我的模板事件的一部分在meteorjs
中)
我的代码应该只在图像完成但不工作时在屏幕上触发新图像(url设置为SessionVar)
这是我的错误
Failed to load resource: the server responded with a status of 503 (Service Unavailable)
这样的办法应该行得通。模式是使用反应式数据源设置模板帮助器-在本例中为
Meteor.user()
。当Meteor.user()
更改时,模板助手将呈现新数据,而无需手动获取任何数据:
<template name="test">
<div>Profile Image:</div>
{{#if profileImage}}
<div><img src="{{profileImage}}"></div>
{{/if}}
</template>
Template.test.events({
'change #avatarForm': function(event) {
FS.Utility.eachFile(event, function(file) {
Images.insert(file, function(err, fileObj) {
if (err) {
// handle error
} else {
// handle success depending what you need to do
var userId = Meteor.userId();
var profileImage = {
"profile.image.url": fileObj.url(),
"profile.image.id": fileObj._id
};
Meteor.users.update(userId, {
$set: profileImage
});
}
});
});
},
});
Template.test.helpers({
profileImage: function () {
return Meteor.user().profile.image.url;
}
});
配置文件图像:
{{{#if profileImage}
{{/if}
Template.test.events({
“更改#虚拟形式”:功能(事件){
eachFile(事件、函数(文件){
image.insert(文件,函数(err,fileObj){
如果(错误){
//处理错误
}否则{
//根据你需要做的事情处理成功
var userId=Meteor.userId();
var profileImage={
“profile.image.url”:fileObj.url(),
“profile.image.id”:fileObj.\u id
};
Meteor.users.update(userId{
$set:profileImage
});
}
});
});
},
});
Template.test.helpers({
profileImage:函数(){
返回Meteor.user().profile.image.url;
}
});
像这样的东西应该可以用。模式是使用反应式数据源设置模板帮助器-在本例中为Meteor.user()
。当Meteor.user()
更改时,模板助手将呈现新数据,而无需手动获取任何数据:
<template name="test">
<div>Profile Image:</div>
{{#if profileImage}}
<div><img src="{{profileImage}}"></div>
{{/if}}
</template>
Template.test.events({
'change #avatarForm': function(event) {
FS.Utility.eachFile(event, function(file) {
Images.insert(file, function(err, fileObj) {
if (err) {
// handle error
} else {
// handle success depending what you need to do
var userId = Meteor.userId();
var profileImage = {
"profile.image.url": fileObj.url(),
"profile.image.id": fileObj._id
};
Meteor.users.update(userId, {
$set: profileImage
});
}
});
});
},
});
Template.test.helpers({
profileImage: function () {
return Meteor.user().profile.image.url;
}
});
配置文件图像:
{{{#if profileImage}
{{/if}
Template.test.events({
“更改#虚拟形式”:功能(事件){
eachFile(事件、函数(文件){
image.insert(文件,函数(err,fileObj){
如果(错误){
//处理错误
}否则{
//根据你需要做的事情处理成功
var userId=Meteor.userId();
var profileImage={
“profile.image.url”:fileObj.url(),
“profile.image.id”:fileObj.\u id
};
Meteor.users.update(userId{
$set:profileImage
});
}
});
});
},
});
Template.test.helpers({
profileImage:函数(){
返回Meteor.user().profile.image.url;
}
});