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;
}
});