为什么jQuery的ajax成功方法不起作用?

时间:2019-02-21 05:40:57

标签: javascript jquery node.js

我正在尝试在类型文件输入处理文件时添加一些动画,我决定使用jQUery的ajax方法发送表单数据。

我注意到beforeSend方法有效,但不适用于success方法,但是error方法包含节点服务器发送的所有响应。我试图寻找类似的问题,但没有一个对我有用。

JS:

fileForm.on('submit', function(e) {
    e.preventDefault();
    let formData = new FormData();
    formData.append('file', $('#input-file').prop('files')[0]);
    $.ajax({
      url: this.action,
      dataType: 'script',
      cache: false,
      contentType: false,
      processData: false,
      beforeSend: () => {
        console.log('loading');
      },
      success: function(response) {
        console.log(response); // Not logging anything
        setTimeout(() => {
          console.log('succeded: ' + response);
        }, 500);
      },
      error: (err) => {
        console.log(err); // This logs the response
      },
      data: formData,
      type: this.method.toUpperCase()
    });
  });

Node.JS:

router.post('/image', upload.single('file'), async (req, res) => {
  if (req.session.passport !== undefined) {
    try {
      console.log(req.file, req.body);
      const query = {_id: req.session.passport.user};
      const user = await modelAct(userModel, query, 'findOne');
      // const opt = {
      //   query: query,
      //   data: {
      //     $set: {
      //       avatar_path: req.file.path
      //     }
      //   }
      // };
      // await modelAct(userModel, opt, 'updateOne');
      res.status(200).json({fileData: req.file});
    } catch(err) {
      console.log(err);
      if ((typeof err.message == 'string')) {
        res.sendStatus(err.message);
      } else {
        res.sendStatus(500);
      }
    }
  } else {
    res.sendStatus(401);
  }
});

Here's a screenshot of the network tab

0 个答案:

没有答案